Windows服务进行消息处理

yinshi2012 2011-09-01 11:08:50
本人做了个windows服务用于消息处理,参看了之前的帖子在服务中创建了窗体(不显示),在窗体的消息循环函数中做了处理。
但是如果只有这些服务是无法响应消息的。需要Application.Run();来启动一个消息循环。
这时问题来了在启动服务的时候会提示1053错误,在控制面板里的服务窗口里查看服务的状态不是“已启动”而是“启动”,在进程中可见服务进程,而且通过客户端,也可以确定服务的功能执行正常。

到此可以说能用就好了。但我还有疑问
1、这样使用是不是有什么遗留问题?起码我现在就知道在控制面板里的服务窗口查看服务时,右键的启动和禁用都是灰掉的
2、服务中处理消息有没有其他的办法?
3、服务中用窗口处理消息,有没有更好启动方法,以便服务可以正常启动和关闭(现在无法正常关闭)
...全文
169 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinshi2012 2011-09-01
  • 打赏
  • 举报
回复
自己顶
qiaoxialiushui 2011-09-01
  • 打赏
  • 举报
回复
你不会说的是我的帖子吧,我是分开了连个exe来做的,不过打包完还是有些问题。
yinshi2012 2011-09-01
  • 打赏
  • 举报
回复
此问题结了,没有修改程序,只是找到了可以正常启动服务的方法。
=============================================================
之所以启动服务会失败,因为Application.Run();是阻塞的。把它放入onstart中就会出现帖子中的描述。
但是没有它又不行,只有调用了Application.Run();才会启动消息循环。
我的做法是onstart中通过Thread类建立线程,需要注意的是窗口的建立和Application.Run();都要放入Thread中。否则仍然无法响应消息。
Application.Run()要try catch 起来,因为这样处理服务关闭的时候会触发异常“正在中止线程。”。
=============================================================
这个问题就这样了,能正常的用就好了,时间紧迫。
我觉得windows肯定有更好的处理方法,留到以后讨论吧。
yinshi2012 2011-09-01
  • 打赏
  • 举报
回复
不是守护进程。就是一个可以处理自定义消息的服务。
守护进程不了解,它能不能在系统不登录的时候启动程序,如果可以的话做个守护进程也可以。
ycproc 2011-09-01
  • 打赏
  • 举报
回复
你说的守护进程对吧!

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧