Windows窗体应用程序C#中的后台工作程序不会阻止UI

时间:2014-01-22 14:26:35

标签: c# winforms

我在win表单应用程序中使用后台工作程序我正在显示长时间运行进程的进度条形式,并且长时间运行的进程在后台工作程序上。

注意:我使用后台工作程序来显示字幕样式的进度条。

我面临的问题是由于后台工作者我的用户界面得到了响应,但我不希望它有响应。

我的代码如下:

ProgressBarForm progForm = new ProgressBarForm();
progForm.Show();
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork+= myMethod;
worker.RunWorkerAsync();

2 个答案:

答案 0 :(得分:6)

考虑到您使用表单来显示进度,可以使用ShowDialog代替Show。这将打开窗口作为模式对话框,阻止对底层窗口的UI操作,直到关闭进度窗口。

需要考虑的一些事项:

  • ShowDialog是一个阻止调用,因此在启动后台工作程序后调用它。
  • 确保用户无法关闭窗口,并在后台工作程序完成后以编程方式自行关闭窗口。

答案 1 :(得分:1)

如果您不想使用您的用户界面,请设置.Enabled = false;在每个表单控件上,然后反转_RunWorkerCompleted中的更改。

请记住启用任何取消/关闭按钮:)