日期:2014-05-17  浏览次数:20973 次

求教C#如何动态地创建多个Windows服务?
如果是静态地创建一个的话那是没有什么问题的,C#里新建一个Windows服务的工程就能简单的新建一个Windows服务出来了,但我想能不能通过动态的方式创建多个Windows服务?请问下有没谁搞过的?求教,谢谢!

------解决方案--------------------
当然可以,你查看下工程下Program.cs文件就会发现:
C# code
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        static void Main()
        {
            ServiceBase[] ServicesToRun;

            // 同一进程中可以运行多个用户服务。若要将
            // 另一个服务添加到此进程中,请更改下行以
            // 创建另一个服务对象。例如,
            //
            //   ServicesToRun = new ServiceBase[] {new Service1(), new MySecondUserService()};
            //
            ServicesToRun = new ServiceBase[] { new FolderManagerServer() };

            ServiceBase.Run(ServicesToRun);
        }
    }

------解决方案--------------------
不是任何程序都可以成为服务的,必须继承ServiceBase的类才行,而你说的动态创建是动态注册系统服务还是外部加载?外部加载的话,你需要监视本地文件夹,插件形式加载dll;动态注册很简单,只要sc命名执行即可。