C# 是否使用后台工作程序显示(弹出)对话框窗体?

C# 是否使用后台工作程序显示(弹出)对话框窗体?,c#,multithreading,popup,backgroundworker,sleep,C#,Multithreading,Popup,Backgroundworker,Sleep,我必须睡5次主觉,每次暂停10秒来完成某项任务。 问题是,我的主windows窗体在此期间冻结。所以,我想显示一个没有冻结的弹出窗口 我已在主窗体中添加了一个后台工作人员: private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { // ... how do I involve this? } 当我按下主窗体上的按钮时,它会执行以下操作: BussyWindow bussyWindow = new Bus

我必须睡5次主觉,每次暂停10秒来完成某项任务。 问题是,我的主windows窗体在此期间冻结。所以,我想显示一个没有冻结的弹出窗口

我已在主窗体中添加了一个后台工作人员:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
// ... how do I involve this?
}
当我按下主窗体上的按钮时,它会执行以下操作:

BussyWindow bussyWindow = new BussyWindow();
bussyWindow.ShowDialog();
然后我的主窗体进入一个循环大约50秒

我试过:

BackgroundWorker bw = new BackgroundWorker();
bw.RunWorkerAsync(bussyWindow);

我卡住了!下一步尝试什么?

如果使用BackgroundWorker,则不需要其他表单,请尝试以下操作:

 BackgroundWorker bw = new BackgroundWorker();
        bw.DoWork += bw_DoWork;
        bw.RunWorkerAsync();

private void bw_DoWork(object sender, DoWorkEventArgs e)
    {
        // do your work here
    }

您的工作将异步完成。

如果您正在使用BackgroundWorker,则不需要其他表单,请尝试以下操作:

 BackgroundWorker bw = new BackgroundWorker();
        bw.DoWork += bw_DoWork;
        bw.RunWorkerAsync();

private void bw_DoWork(object sender, DoWorkEventArgs e)
    {
        // do your work here
    }

您的工作将异步完成。

好的,谢谢!但万一我想要另一种形式,以显示一些沉重的输出(需要大量的空间,更干净的设计)。我在哪里声明新表单并激活它?我解决了它!我太傻了!只需将其命名为backgroundWorker1.RunWorkerAsync();好的,谢谢!但万一我想要另一种形式,以显示一些沉重的输出(需要大量的空间,更干净的设计)。我在哪里声明新表单并激活它?我解决了它!我太傻了!只需将其命名为backgroundWorker1.RunWorkerAsync();好的我会记住的好的我会记住的