我已经使用(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中创建文件,而是在我盯着它时显示跟随错误!
本地计算机上的测试服务安装程序服务已启动,然后停止。如果某些服务未被其他服务或程序使用,则会自动停止。
答案 0 :(得分:2)
将上述代码放在Try-Catch块中,将其写入事件日志以查找任何异常并进行调查。也可以将它们放在单独的线程中以避免任何阻塞。
答案 1 :(得分:0)
如果您从控制台运行该服务,请确保您的帐户拥有E驱动程序的权限。
如果您已经安装了服务,并意识到它抛出了异常,那么请设置服务安装程序的帐户类型,如
var serviceInstaller = new ServiceProcessInstaller();
serviceInstaller.Account = ServiceAccount.LocalSystem;
答案 2 :(得分:0)
我几乎肯定你的代码崩溃了。上面的尝试捕获建议是最好的,所以你可以看到爆炸的东西。
此外: 尽量不要在OnStart中执行需要很长时间的事情 - 只需轻量级初始化。有一个超时,如果你超过这个门槛,Windows会抱怨它无法启动它 - 它将保持在启动状态,这很烦人。 在OnStart中,只启动一个计时器,并在该计时器的间隔 计时器 _Elapsed 的到期事件的处理程序中执行重物。在执行你的东西之前暂停计时器并在操作结束后重新启动它。