从.Net服务打开窗口/对话框

时间:2011-05-06 03:39:50

标签: c# .net windows-services

我创建了一个C#.Net Windows服务。此服务正在使用一些配置文件。现在我们有另一个dll组件,由应用程序加载,然后我们创建配置文件。我想从我的直接服务中打开这个dll组件。遵循我想在最终服务exe中提供的选项,它将作为服务以及配置器。

让我们说exe名称是SampleServ.exe,那么选项应该是:

  1. 没有任何参数,它应该以服务开始
  2. 使用像SampleServ.exe -config这样的参数(它应该启动配置器而不是服务)
  3. 我正在尝试这样

    public static void Main(string[] args)
    {
        if (args.Length == 0)
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
               new Service1() 
            };
            ServiceBase.Run(ServicesToRun);
    
        }
        else
        {
            MainPage wnd = new MainPage();
            wnd.ShowDialog();
        }
    }
    

    这里的MainPage是派生窗口,由于服务限制,我无法添加命名空间system.window。

    如果可能的话,请告诉我。


    在项目参考中添加更多组件后,我能够做到这一点。我添加了像“PresentationCore”,“PresentatinoFramework”,“System.Xaml”这样的引用。我只想知道添加此类组件是否有任何影响。有什么想法吗?

    否则现在我的代码正在运行......

2 个答案:

答案 0 :(得分:1)

您好这里是您需要的完整示例,它还包括安装/卸载功能

http://blogs.microsoft.co.il/blogs/kim/archive/2009/01/04/self-installing-windows-service.aspx

答案 1 :(得分:0)

使用Environment.GetCommandLineArgs获取参数(索引0是程序的名称,但要小心)。如果参数1不是“-config”,则作为服务启动,否则显示您的配置表单。

相关问题