【问题标题】:Windowservice error窗口服务错误
【发布时间】:2010-12-19 18:49:09
【问题描述】:

我有包含这么多项目和窗口服务的解决方案。我在windowservice的应用程序端修改了编码,之后我复制了exe 关于该服务(F:\Components\Console\Bin\service.exe) 进入安装路径(C:\Program Files\syscon\Monitor\service.exe)后 从'services.msc'停止windowservice。现在我在调试时获得了服务的价值,这是以前没有的。但是现在当我启动 来自“services.msc”的服务我收到此错误 “无法在本地计算机上启动可操作的哨兵 Windows 资源监视器服务。错误 1053: 服务没有及时响应启动或控制请求” 谁能告诉我一个解决方案

【问题讨论】:

  • 但我也安装了新版本的框架,但它仍然存在

标签: c# .net winforms windows-services


【解决方案1】:

我们在工作期间创建了许多服务,我发现一种非常有用的调试方法如下:

使您的服务成为“双重应用程序”,可以作为服务运行,也可以作为正常的 Windows 窗体应用程序运行,由一些命令行参数控制。我将“/gui”传递给我的服务。

void Main(string[] args)我检查参数:

如果缺少,我执行代码来实例化服务(Visual Studio 生成的代码)。

如果存在,我运行代码来创建一个普通的 Windows 窗体应用程序,其中主窗体实例化服务并相应地调用 OnStartOnStop(由于 @ 的可见性,您必须创建包装器方法987654324@ 和 OnStop)。

当然你必须手动添加对Windows Forms程序集的引用并自己添加Application.Run(...)之类的代码,但是调试能力大大提高,而无需经历“停止服务,复制文件,启动服务,失败”的麻烦“-例行公事。

很可能,您的 OnStart 代码中存在一个错误,导致实例退出该例程并且服务管理器一直在等待。

编辑
这是我根据参数创建服务/gui的方式的代码示例:

static void Main(string[] args)
{
    if (args.Length > 0 && args[0].Equals("/gui"))
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new FrmGui());
    }
    else
    {
        ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[] { new SampleService() };
        ServiceBase.Run(ServicesToRun);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多