1

我是使用 C# 框架 4.0 创建 Windows 服务的新手,我制作了一个使用 DLL 文件连接到指纹考勤终端的 Windows 应用程序。

但我对如何将 Windows 应用程序转换为 Windows 服务感到困惑。

当我按照教程进行操作时,我可以运行和安装一个简单的服务。但是如何在 Windows 服务中添加新事件

所以首先我在项目中添加对我的 DLL 文件的引用。其次,我在 InitializeComponent 方法中添加了这段代码

    private void InitializeComponent()
    {  
        this.ServiceName = "MyService";
        AxBioBridgeSDK.AxBioBridgeSDKX MyBio = new AxBioBridgeSDK.AxBioBridgeSDKX();

        MyBio.OnAttTransaction += new AxBioBridgeSDK.IBioBridgeSDKXEvents_OnAttTransactionEventHandler(this.axBioBridgeSDKX1_OnAttTransaction); // this is the event handler function
    }

    #endregion
    private AxBioBridgeSDK.AxBioBridgeSDKX MyBio;
}

并在OnStart()我添加代码以打开与终端的连接。在我安装服务并尝试运行它后,我收到此错误:

Windows 无法在本地计算机上启动“MyServiceName”服务。

错误 1053:服务未及时响应启动或控制请求。

有什么帮助吗?

4

2 回答 2

1

Windows 服务并不意味着处理用户界面事件。它们被设计为在单独的内存空间中运行并使用不同的凭据。通常他们不需要用户登录。

您收到的错误是由于您的服务启动功能行为不正确,并且服务在您启动后立即停止。

调试服务需要一些不同的技术,然后调试 Windows 应用程序。您需要先安装该服务并使用服务管理器启动它,以便您可以对其进行调试。

于 2012-10-01T10:28:17.257 回答
0

这可能是任何数量的事情。检查 .net 执行失败的事件日志,它可能会提供有关失败原因的更多信息。

从用户应用程序转到 Windows 服务时需要考虑的一些事项。

  1. 运行应用程序的帐户不同,因此安全权限可能是一个因素
  2. Windows 服务可以进行用户交互,而桌面应用程序则可以。
  3. 如果服务启动不够快,windows 将自动中止进程,因为它认为出现了故障。

简而言之,桌面!= Windows 服务!= Web 应用程序。每个人都有自己的背景、目的、优势和劣势。

于 2012-10-01T10:31:38.827 回答