Show()冻结执行:windows窗体c#

Show()冻结执行:windows窗体c#,c#,winforms,messagebox,C#,Winforms,Messagebox,你好。我有一张表格和一个后台工作人员。在bw_Dowork事件中,有时我需要使用MessageBox.Show()打印消息(即是?否框)。但是,无论何时调用messageBox.Show()方法,执行都会冻结,表单不允许我单击所选内容(即是/否)。有时候,如果我想工作,我必须按消息显示的那样快速点击。否则,当我给它一秒钟的间隙时,它就会冻结。我使用MessageBox.Show()的实例示例如下所示: private void bw_DoWork(object sender, DoWorkEve

你好。我有一张表格和一个后台工作人员。在bw_Dowork事件中,有时我需要使用MessageBox.Show()打印消息(即是?否框)。但是,无论何时调用messageBox.Show()方法,执行都会冻结,表单不允许我单击所选内容(即是/否)。有时候,如果我想工作,我必须按消息显示的那样快速点击。否则,当我给它一秒钟的间隙时,它就会冻结。我使用MessageBox.Show()的实例示例如下所示:

private void bw_DoWork(object sender, DoWorkEventArgs e)
{
    if (fileFTP.Exists == false)
    {
        _busy.WaitOne();

        if ((worker.CancellationPending == true))
        {
            e.Cancel = true;
            return;
        }

        SetText("File Ftp.exe are missing. This file are required to preform update, please contact yout system administrator to retrive Ftp.exe", true);
        MessageBox.Show("File Ftp.exe are missing. This file are required to preform update, please contact yout system administrator to retrive Ftp.exe");
        goto ExitProgram;
    }  
}

我在网上对此做了一些研究之后,有人建议MessageBox干扰了接口线程。这使我使用委托触发消息,但都没有用。我不得不移除所有的留言框。当我被解雇时,留下一个仍然会冻结我的死刑。如果您有任何帮助,我们将不胜感激。

尝试使用主UI线程显示messagebox:

this.BeginInvoke((Action)(() => MessageBox.Show("Hello")));
(假设这是一个表单)


顺便说一句:“转到”?真的吗?

可能会重复一些奇怪的声音。对我来说,它并没有冻结。当我看到
goto
时,我的想法就是这样的:虽然我使用了不同的方法,但urs也可以。谢谢。我以为所有goto“用户”很久以前就死了P