我正在使用背景工作来显示加载屏幕。
DO事件如下:
private void bwLoadingScreen_DoWork(object sender, DoWorkEventArgs e)
{
_ls = new LoadingScreen();
_ls.Show();
while (!bwLoadingScreen.CancellationPending)
{
Application.DoEvents();
}
}
我使用以下代码来处理Loadingscreen:
if (_ls.InvokeRequired && !_ls.IsDisposed)
{
Invoke(new MethodInvoker(delegate
{
_ls.Close();
_ls.Dispose();
}));
}
else if (!_ls.IsDisposed)
{
_ls.Hide();
_ls.Dispose();
}
我应该使用RunWorkerCompleted事件吗? 这是使用Backgroundworker的正确方法吗?
答案 0 :(得分:4)
我觉得你这样做有点倒退了。 Backgroundworker应该在主进程显示当前表单并可能更新它时执行工作。当backgroundworker完成加载数据后,它应该在backgroundworker事件'RunWorkerCompleted'中的主线程中处理它。
这也将简化您的代码,因为您在关闭或隐藏表单之前不需要调用。
我希望这能回答你的问题。 // Flipbed
答案 1 :(得分:2)
以下是一些可以帮助您获得所需内容的精彩文章:
BackgroundWorker Class Sample for Beginners
BackgroundWorker and ProgressBar demo
希望这有帮助!