我之前没有写过Windows服务,并且认为一切进展顺利,直到我将其部署为live。在开发中它工作得很好并且轮询它很棒,但是一旦它投入生产它就会在第一次循环后落在它的背面。
The exception I recieve is:
Application: ProgramName.WinService.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Exception
Stack:
at ProgramName.WinService.UpdateChecker.StartChecks()
at ProgramName.WinService.UpdateChecker.StartPolling()
at System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.ThreadHelper.ThreadStart()
以下是执行循环的代码:
private readonly Thread pollingThread;
public UpdateChecker()
{
pollingThread = new Thread(StartPolling);
InitializeComponent();
}
protected override void OnStart(string[] args)
{
pollingThread.Start();
}
protected override void OnStop()
{
pollingThread.Abort();
}
protected void StartPolling()
{
do
{
StartChecks();
//10 seconds
Thread.Sleep(10000);
} while (true);
}
有没有人知道为什么在第一次运行后会出现这种情况?我做了些蠢事吗?
这是导致问题的方法:
public static string GetXmlFromFeed(string strUrl) { var rssReq = WebRequest.Create(strUrl); var rep = rssReq.GetResponse(); 返回new StreamReader(rep.GetResponseStream())。ReadToEnd(); }
在GetResponse()
上可能是超时而与线程无关
答案 0 :(得分:1)
查看异常堆栈跟踪似乎StartChecks
抛出了一个未处理的异常,它传播到调用线程(this behavior was introduced in .NET 2.0,就像之前在子线程中抛出的异常没有传播一样) 。
尝试在其周围加try/catch
以处理此异常。