Windows服务停止工作,回收修复它

我有一个窗口服务,有触发一个方法每30秒的计时器。

然后,该方法调用Thread.sleep()方法和当它完成它调用thread.start();

在该方法中的所有代码被包装在一个try / catch除调用胎面睡眠/启动。

出于某种原因,该服务停止工作,但如果我再利用,或将其设置在一个崩溃回收它工作正常。

我怎么能诊断问题?
是否有其他事件像OnCrash或somethign,我可以挂接到挖入堆栈跟踪?

--------------解决方案-------------

Windows服务是一样的作为一个正常的应用程序,它只是执行方式不同。 所以问问你自己,如果你的正常的应用程序没有崩溃,但停止工作,是什么引发的呢? 很多东西映入脑海像锁定问题,并发问题等...

没有OnCrash事件,虽然,但我做的Windows服务是把所有的逻辑在一个单独的组件,用一个简单的启动方法和方式,我可以托管在一个控制台应用程序并执行测试轻松移动到窗口服务也没有太难。

您的另一种选择是在Visual Studio调试器附加到Windows服务和调试正常。

没有,没有,但为什么不只是把一个try / catch自己,当它发生时记录异常?

另外,我觉得调用睡眠和开始非常可疑。 你不应该在普通使用这些电话进行同步。 你为什么做这些电话?

我认为,首先,你需要找到为何导致崩溃的原因。 OnCrash? 好吧,如果它坠毁它不会有什么好说的,我猜。

它的定时器! 摆脱它,您的问题将得到解决。

查看这篇文章的详细信息。

你最好做这样的操作?

While (stopSignal = False)
'do your work'
Thread.Sleep(yourInterval)
End While

编辑:如果你要调试的服务,而不必通过附加一个调试器受苦,那么做到这一点。

无论您是不同意这种与否,微软已经确认了一个bug,并移除计时器是为了避免这个问题的唯一途径。 你也应该不会使用异常的程序流控制(捕获和重试),如果你能帮助它。

您可以使用微软的调试诊断工具1.1版来监控服务,并创建转储时崩溃。 然后你就可以调试转储。

http://www.microsoft.com/download/en/details.aspx?id=24370

分类:调试 时间:2012-01-01 人气:2
本文关键词: 调试,窗口服务
分享到:

相关文章

  • 调试窗口服务,加入DB日志记录赶上cluase一个坏主意? 2014-06-17

    我有一个窗口服务,我尝试调试. 这是个糟糕的主意添加错误日志记录渔获()子句中? 我的记录是使用数据库BTW记录错误. --------------解决方案------------- 我不是100%清楚,你想做你提到调试和日志记录的内容. 登录catch子句通常是一个好主意,如果进行全面记录方法的一部分. 如果你正在调试的服务后,你有两个选择 - 如果你可以控制你的代码试图从服务以外(通过一些外部的刺激),调试,或者如果你有一段时间被执行的代码之前,你可以简单地开在VS中的源代码和,只要你在调试

  • 调试窗口服务不提供任何符号已加载消息 2014-09-09

    我有一个窗口服务,我已经在服务的OnStart方法写Debugger.Attach(). 当我启动服务,我得到它要求选择调试器实例的弹出窗口. 当我选择,然后按确定,在Visual Studio成为关注焦点,但显示我"没有符号已经加载消息" 谢谢 --------------解决方案------------- 我跟着两个步骤1.从这里http://geekswithblogs.net/dbutscher/archive/2007/06/26/113472.aspx 虽然在Visual

  • 调试窗口服务 2015-01-03

    我创建了一个窗口服务,并手动安装它. 后来开始从服务工具的​​服务. 现在我想dubug从Visual Studio IDE中的Windows服务应用程序. 当我尝试从附加调试选项卡的过程中在IDE中,Windows服务程序显示在列表中,但没有突出显示要附加. 有没有办法,我要附加到调试服务应用程序的任何其他的主要过程. 发布任何相关的信息表示赞赏. 谢谢. --------------解决方案------------- 这不回答这个确切的问题,但对于它的价值,我已经找到了发展的最简单的方法和调

  • 不从其他应用程序消耗的代码调试窗口服务 2013-09-17

    是否有可能不消耗代码的可启动的应用程序调试Windows服务或类库? 有一个关于这样一个线程,但这些技术不工作,一直说"无法启动服务......"因为我使用的是Windows服务. 谢谢 --------------解决方案------------- 在你的主要功能,而不是调用ServiceBase.Run(servicesToRun)只需运行要测试的实际代码. 我通常把代码检查命令行参数,如下所示: -c run in console mode -i install the serv

  • 调试窗口服务:断点将目前尚未受到打击 2015-02-14

    我重视的是我运行Windows服务的过程中/开始我的机器上. 2010年vs.net我有我的服务设置一些breakbpoints,但他们每个人说:?: "断点将目前不能打' 有什么能为Windows服务发生的调试最简单的方法? --------------解决方案------------- 这是调试Windows服务的正确方法,但你必须确保Windows服务的文件更新. 我的意思是,只要你建立Windows服务项目,你应该停止该服务,替换Windows服务EXE和DLL文件相关,然后重新启动Wi

  • 如何调试Windows服务 2012-03-07

    我创建一个使用代码项目第一个窗口服务. 我能够安装服务,并使用-i和-d选项删除服务. 我能看到SERVICES.MSC服务,但是当我启动该服务确实nothing.Below我会proide服务主要代码: void WINAPI ServiceMain(DWORD argc, LPTSTR *argv) { DWORD status; DWORD specificError; m_ServiceStatus.dwServiceType = SERVICE_WIN32; m_ServiceStat

  • 调试Topshelf服务,将不属于限制帐户下运行 2013-02-23

    我有一个Windows服务中使用Topshelf编写的. 我试图将其配置为使用具有限制权限,而不是使用本地系统Windows帐户来运行. 这也是必要的,因为我想连接到使用集成的身份验证数据库. 以LocalSystem身份运行(虽然包含凭据的数据库连接字符串)和运行控制台应用程序作为我有限的帐户(使用运行方式)也适用时的服务工作. 然而,当我尝试启动该服务的服务控制管理器超时等待响应: 该服务没有响应及时启动或控制请求. 我也得到了应用程序弹出菜单事件日志中: 应用程序错误:未知软件异常(0xc

  • 调试Windows服务 2014-04-25

    方案 我有写在C#中的窗口服务. 我读过关于如何调试它所有的谷歌线程,但我仍然无法得到它的工作. 我已经运行"PathTo.NetFramework \ InstallUtil.exe C:\ MyService.exe". 它说,安装成功了,但是当我运行"SERVICES.MSC",不显示在所有的服务,在任何地方. 如果我进入任务管理器中,有一个名为"MyService.vshost.exe"的过程. 相当肯定这不是它,因为它是一个服务,而不是

  • 如何调试使用断点窗口服务? 2014-03-16

    我有一个窗口服务,一个计时器. 它很难调试. 因为我启动该服务,并把代码中的不同部分突破点. 当我附上的过程中,我预计该服务从一开始,而不是在中间代码,我有破发点一些randome的地方开始. 它很难调试像一个正常的应用程序,你知道的起点. 似乎有在尚未完成回地面流程. 所以,每一次,我开始调试,而不是从第一个破发点开始,它从应用程序的中间一些随机破发点开始. 我想知道如何窗口服务工作中的进程,线程等方面......我怎么能从头开始调试? --------------解决方案----------

  • 在调试器中运行应用程序连接到web服务中但不作为窗口服务运行时 2014-05-23

    我创建了一个C#应用程序,我运行作为Windows服务. 这工作得很好. 这样它可连接到Web服务我最近修改了它. 当在Studio运行,这个新的代码工作正常,并连接到Web服务. 然而,当我运行该程序作为Windows服务(在同一台机器上)节目超时,因为它不能连接到Web服务(使例外 - 无法连接到远程服务器). 谁能想到,为什么这可能发生? 看出,当作为服务运行是个例外: System.Net.WebException was unhandled Message="Unable to con

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.704 (s). 10 q(s)