几个Windows服务可以共享一个进程。 在C#中,他们将开始为:
ServiceBase.Run(new MyService1(),new MyService2());
run方法的调用会阻塞执行main()的线程。 同时处理服务事件。 那么他们在哪里执行?
他们是否使用asynchronous过程调用的“主”过程中不仅被阻止,而是在警戒等待? 如果是这样的话,共享多个服务的过程在性能上有缺点。 处理程序是否在单独的线程中运行? 它们是否在包含Run()调用的进程之外执行?
分布式列表中的冲突解决
获取Windows版本
如何以编程方式说明XP 64位和Server 2003 64位之间的区别
简单的C#应用程序无法正常工作,在Visual Studio中运行时工作正常
testing/debuggingShell Extension&Regasm&explorer.exe
获取计算机上安装的所有驱动程序
如何在UltraWinGrid中设置自定义字体?
如何devise具有相同结构的窗体?
在Windows中,多个服务可以通过使用SERVICE_WIN32_SHARE_PROCESS服务类型共享一个进程。 .NET必须使用此服务类型在Windows上的单个进程中注册多个服务。
每个注册的服务都有一个由SERVICE_TABLE_ENTRY结构表示的名称和本地入口点地址。 .NET将为传递给ServiceBase.Run方法的每个服务构造一个SERVICE_TABLE_ENTRY ,并用这些信息调用StartServiceCtrldispatcher函数。
要接收有关服务状态的通知,入口点(由ServiceBase类实现的ServiceMain )必须调用RegisterServiceCtrlHandlerEx来接收通知。 这些通知是使用APC发送的。 另外, NotifyServiceStatusChange API也使用APC。
你可能要做的就是windows服务体系结构以及如何将服务应用程序集成到其中。
MSDN中已经有关于该主题的非常好的文章, 可以在这里找到。
它不仅解释了Windows如何与服务交互,服务数据库如何工作(至少部分)。
本文还解释了操作系统服务如何工作,并提供了有关IIS(Internet信息服务)中托管服务的一些提示。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。