C#幕后工作人员不为他人解雇

C#幕后工作人员不为他人解雇,c#,.net-2.0,backgroundworker,C#,.net 2.0,Backgroundworker,也许这个问题没有道理,但问题是我的程序对我来说运行得很好。然而,当我将它发送到我兄弟的PC(相对较新的)进行测试时,BackgroundWorker没有启动 BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler(fetchList); if (!bw.IsBusy) { // I have checked that this stage is reached, and it is

也许这个问题没有道理,但问题是我的程序对我来说运行得很好。然而,当我将它发送到我兄弟的PC(相对较新的)进行测试时,
BackgroundWorker
没有启动

BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(fetchList);
if (!bw.IsBusy)
{
    // I have checked that this stage is reached, and it is.
    bw.RunWorkerAsync();
}
我还调试了正在调用的函数,它肯定不会启动。我正在使用
.NET2.0
,所以我不认为这应该是问题所在

如果重要的话,工人调用的函数使用2个包
HtmlAgilityPack
Newtonsoft.Json

不,您可以指望这些代码工作得很好。您不能指望的是fetchList方法工作正常。如果它出于任何原因抛出异常,那么它将不会停止您的程序来告诉您。捕获异常并将其作为e.Error属性传递给RunWorkerCompleted事件处理程序。您需要检查它并采取适当的纠正措施,至少让用户知道


您没有RunWorkerCompleted事件处理程序。所以你当然不知道为什么fetchList不起作用。

我很确定我们没有足够的上下文来帮助你解决这个问题。我没有更多的东西可以提供,我只是希望有人知道这种行为的原因。我是C#新手,可能有一些简单的原因我不知道是什么导致了这种情况。如果您需要更多详细信息,请告诉我。我们不知道是谁调用了构建
BackgroundWorker
的代码。我们也不知道是什么触发了它。此外,我们不知道你是否偶然建立了不止一个。我们也不太了解您将其部署到的框。请不要引用我的话,但我记得,如果
BackgroundWorker
线程中存在异常,则worker将取消,并且异常将被包装在
AsyncCompletedEventArgs
中,您可以从
RunWorkerCompletedEventHandler
中获得。此方法“fetchList”是否会自动中断?@WillFaithfull否,
fetchList
根本不执行。我通过在开头显示一个不会显示的标签进行测试。我将文本“not busy”放在打印的
RunWorkerAsync
函数调用的正上方,但是
fetchList
one中的函数调用根本没有显示。这让我得出结论,它根本没有运行。只是为了更清楚:
bw.RunWorkerCompleted+=MyClass\u RunWorkerCompleted
,然后
void MyClass\u RunWorkerCompleted(object sender,EventArgs e){System.Windows.MessageBox.Show(e.Error.ToString());}
或类似我是否需要向用户提供
HTMLAgilityPack
dll文件以及Json包?我问这个问题的原因是,如上所述,它对我来说很好,但对其他人来说却不行。如果情况如您所说,
fetchList
实际运行但被终止,那一定是因为它没有找到
HTMLAgilityPack
或Json。“打印代码”错误引发了异常,因此我无法看到堆栈跟踪。请先修复代码。当你得到一个好的诊断时,你就会明白如何处理真正的问题。