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

MUH*_*raf -1 c# winforms

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

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

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

我的代码如下:

ProgressBarForm progForm = new ProgressBarForm();
progForm.Show();
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork+= myMethod;
worker.RunWorkerAsync();
Run Code Online (Sandbox Code Playgroud)

Bas*_*Bas 6

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

有些事情需要考虑:

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