1

我正在使用 backgroundworker 来显示加载屏幕。

DO 事件如下所示:

private void bwLoadingScreen_DoWork(object sender, DoWorkEventArgs e)
{
            _ls = new LoadingScreen();
            _ls.Show();
            while (!bwLoadingScreen.CancellationPending)
            {
                Application.DoEvents();
           }
}

我使用以下代码来处理加载屏幕:

if (_ls.InvokeRequired && !_ls.IsDisposed)
            {
                Invoke(new MethodInvoker(delegate
                    {
                        _ls.Close();
                        _ls.Dispose();
                    }));
            }
            else if (!_ls.IsDisposed)
            {
                _ls.Hide();
                _ls.Dispose();
            }

我应该为此使用 RunWorkerCompleted 事件吗?这是使用Backgroundworker的正确方法吗?

4

2 回答 2

4

我觉得你这样做有点倒退。Backgroundworker 应该在您的主进程显示当前表单并可能更新它时完成工作。当后台工作人员完成加载您的数据时,它应该在后台工作人员事件“RunWorkerCompleted”的主线程中处理它。

这也将简化您的代码,因为您不需要在关闭或隐藏表单之前调用。

我希望这回答了你的问题。//翻转

于 2013-05-13T12:21:45.303 回答
2

这里有一些很棒的文章可以帮助你得到你想要的:

C# BackgroundWorker 教程

面向初学者的 BackgroundWorker 类示例

BackgroundWorker 和 ProgressBar 演示

后台工作者示例

希望这可以帮助!

于 2013-05-13T12:15:54.457 回答