gpt4 book ai didi

c# - Windows服务的简单线程问题

转载 作者:行者123 更新时间:2023-11-30 18:07:56 24 4
gpt4 key购买 nike

我以前没有写过 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)静态字符串 GetXmlFromFeed(string strUrl) { var rssReq = WebRequest.Create(strUrl); var rep = rssReq.GetResponse(); 返回新的 StreamReader(rep.GetResponseStream()).ReadToEnd();

关于 GetResponse()

可能超时,然后与线程完全无关

最佳答案

查看异常堆栈跟踪,似乎 StartChecks 抛出了一个未处理的异常,它传播到调用线程(this behavior was introduced in .NET 2.0 和以前一样,子线程中抛出的异常未传播).

尝试在它周围放置一个 try/catch 来处理这个异常。

关于c# - Windows服务的简单线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3645375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com