0

我已经使用(Visual Studio 8)创建了一个 Windows 服务并使用installutil.exe工具安装了它,但是我没有得到正确的结果,因为我在服务启动方法上执行了以下代码。

protected override void OnStart(string[] args)
{
    FileStream fs = new FileStream(@"e:\mcWindowsService.txt",
        FileMode.OpenOrCreate, FileAccess.Write);
    StreamWriter m_streamWriter = new StreamWriter(fs);
    m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
    m_streamWriter.WriteLine("m ready buddy");
    m_streamWriter.Flush();
    m_streamWriter.Close();
}

当我盯着它时,它不是在 E Drive 中创建文件而是显示跟随错误!

本地计算机上的测试服务安装程序服务启动然后停止。如果某些服务没有被其他服务或程序使用,它们会自动停止。

4

3 回答 3

2

将上述代码放在 Try-Catch 块中,将其写入事件日志以查找任何异常并进行调查。也可以将它们放在单独的线程中以避免任何阻塞。

于 2012-04-17T17:50:10.057 回答
0

如果您从控制台运行该服务,请确保您的帐户对 E 驱动程序具有权限。

如果您已经安装了服务,并意识到它抛出了异常,那么为服务安装程序设置帐户类型,例如

var serviceInstaller = new ServiceProcessInstaller();
            serviceInstaller.Account = ServiceAccount.LocalSystem;
于 2012-04-17T19:54:07.683 回答
0

我几乎肯定你的代码崩溃了。上面的 try-catch 建议是迄今为止最好的,所以你可以看到发生了什么。

进一步:尽量不要在 OnStart 中执行需要很长时间的东西——只执行简单的初始化东西。有一个超时,如果你超过这个阈值,Windows 会抱怨它无法启动它 - 它会保持在令人讨厌的启动状态。在 OnStart 中仅启动一个计时器并在该计时器的间隔计时器_Elapsed的到期事件的处理程序中执行您的繁重工作。在你执行你的东西之前暂停计时器并在操作结束后重新启动它。

于 2012-04-17T20:58:00.243 回答