C# 奇怪的后台工作人员问题

C# 奇怪的后台工作人员问题,c#,backgroundworker,C#,Backgroundworker,首先是我的代码: public Main() { InitializeComponent(); if (!this.infoGrabWroker.IsBusy) this.infoGrabWroker.RunWorkerAsync(); } private void grabInfo() { MessageBox.Show("hi"); } private void infoGrabWroker_DoWork(object sender, DoWor

首先是我的代码:

public Main()
{
    InitializeComponent();

    if (!this.infoGrabWroker.IsBusy)
        this.infoGrabWroker.RunWorkerAsync();
}

private void grabInfo()
{
    MessageBox.Show("hi");
}

private void infoGrabWroker_DoWork(object sender, DoWorkEventArgs e)
{
    MessageBox.Show("running");
    this.grabInfo();
    MessageBox.Show("done");
}
那么现在来看看奇怪的部分。当我运行它时,它会显示“running”消息框,但不会显示其他两个消息框。现在来看更“奇怪”的部分:当我使用解决方案配置“Debug”运行它时,它工作得非常好,但当我在“Release”中运行它时,它会这样做。自从我第一次安装VS2017之后,我就再也没有弄乱过解决方案配置。如果相关的话,除了添加工作事件之外,我没有对BackgroundWorker做任何事情:

this.infoGrabWroker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.infoGrabWroker_DoWork);

你知道为什么会这样吗?提前感谢,非常感谢您提供的任何帮助,因为我无法在网上找到任何有用的信息。

如果没有可靠地再现问题和更精确地描述问题的良好工具,此问题将无法回答。在阅读介绍性信息之前,请不要向Stack Overflow发布问题,包括@PeterDuniho中的和其他有关的文章,我无法更好地描述它,因为我不知道是什么导致了它。我的检查结果是,BackgroundWorker进入了DoWork事件,但随后没有执行该事件中的调用……”“我无法更好地描述它,因为我不知道是什么导致它”——非序列。不知道问题的起因并不妨碍更好地描述问题。在您发布的代码中,一次不会看到多个
MessageBox
,但是您的描述不够精确,无法知道您是否对代码的执行方式感到困惑,或者只是没有清楚地描述代码的逐步操作。在任何情况下,都不只是缺少描述。您还需要提供一个可靠地再现问题的好方法。另请参阅,包括(尤其是)该页底部链接的文章。@PeterDuniho我在消息框显示后单击了它,因此代码可以继续运行。。。