劳驾给个windows服务的范例
麻烦给个windows服务的范例
我照着webcast里面的步骤一步步做,做是做出来了,能安装但是启动不了,没写什么逻辑,就一个OnStart和OnStop里面写入一个txt文件,记录时间,我也真服我了,照着来做,搞了大半上午都没搞出来,还是启动不了。提示说“启动后停止了”,我犯傻了。
好心人,提供个 .net3.5的创建的“windows服务”项目源码,只要能运行安装和运行就OK,在OnStart和OnStop里面写入一个txt文件,我想对比下我错哪了
比如:
项目源码传网盘给小弟下载看看,麻烦你们了
------解决方案--------------------
http://www.cnblogs.com/caca/archive/2005/02/25/109028.html
你可以将服务附加到进程调试看下
------解决方案--------------------
服务用的权限和当前登陆账号不一样,看看是不是权限问题。
------解决方案--------------------
还有,服务是没有 “窗体”,也就是说,别弄控件。
------解决方案--------------------
开发时,你应该使用Console程序来测试。例如把你要执行的方法放到一个工程中,然后被一个Console工程引用。待调试/测试完毕,需要发布时,你的那个Window Service工程才用上,这个工程中大致只写
protected override void OnStart(string[] args)
{
MyDll.Program.Main();
}
这一行代码就够了。
------解决方案--------------------
例如你的 MyProc.exe 可能是这样的
这时候,如果打开进程管理器,你可以看到真正的服务进程被守护进程自动启动。
你也可以修改一下守护进程,让它自动维护多个服务程序。
我照着webcast里面的步骤一步步做,做是做出来了,能安装但是启动不了,没写什么逻辑,就一个OnStart和OnStop里面写入一个txt文件,记录时间,我也真服我了,照着来做,搞了大半上午都没搞出来,还是启动不了。提示说“启动后停止了”,我犯傻了。
好心人,提供个 .net3.5的创建的“windows服务”项目源码,只要能运行安装和运行就OK,在OnStart和OnStop里面写入一个txt文件,我想对比下我错哪了
比如:
protected override void OnStart(string[] args)
{
StreamWriter sw ;
try
{
sw = File.AppendText("d:\\Logs.txt"); ;
sw.WriteLine("服务启动成功:"+dateTimePicker1.Value.ToString());
}
catch (Exception ex)
{
sw = File.AppendText("d:\\Logs.txt");
sw.WriteLine("StartErro:" + ex.Message);
}
}
项目源码传网盘给小弟下载看看,麻烦你们了
------解决方案--------------------
http://www.cnblogs.com/caca/archive/2005/02/25/109028.html
你可以将服务附加到进程调试看下
------解决方案--------------------
服务用的权限和当前登陆账号不一样,看看是不是权限问题。
------解决方案--------------------
还有,服务是没有 “窗体”,也就是说,别弄控件。
------解决方案--------------------
开发时,你应该使用Console程序来测试。例如把你要执行的方法放到一个工程中,然后被一个Console工程引用。待调试/测试完毕,需要发布时,你的那个Window Service工程才用上,这个工程中大致只写
protected override void OnStart(string[] args)
{
MyDll.Program.Main();
}
这一行代码就够了。
------解决方案--------------------
例如你的 MyProc.exe 可能是这样的
public class Program
{
static void Main(string[] args)
{
//加载一大堆服务,监听一些端口
Console.WriteLine();
Console.WriteLine("系统已经进入控制台Pending状态(按Ctrl+C键关闭进程)........");
Console.WriteLine();
var mh = new ManualResetEvent(false);
Console.CancelKeyPress += (s, e) => mh.Set();
while (!mh.WaitOne(TimeSpan.FromSeconds(120)))
每隔2分钟进行一次服务垃圾数据清理();
}
....
这时候,如果打开进程管理器,你可以看到真正的服务进程被守护进程自动启动。
你也可以修改一下守护进程,让它自动维护多个服务程序。