在维护一些代码时,我发现我们在后台工作人员中有一个无限挂断。工作人员需要访问脚本文件。如果没有定义脚本文件,则编写原始代码以弹出文件对话框,以允许用户选择一个。它看起来像这样:
private void bgworker_DoWork(object sender, DoWorkEventArgs e)
{
... snip ...
if (String.IsNullOrWhitespace(scriptFile))
{
scriptFile = PromptForScript();
}
... snip ...
}
private string PrompForScript()
{
string script = "";
OpenFileDialog openDialog = new OpenFileDialog();
if (openDialog.ShowDialog() == DialogResult.OK)
{
script = openDialog.FileName;
}
return script;
}
我已经阅读了一些关于 的内容MethodInvoker
,但是几乎所有的调用方法都要求您从控件中调用它们。有问题的后台工作人员从一个单独的类运行,该类不扩展Control
. 我是否为此使用与 bgworker 一起调用类的表单?还是有另一种方法可以中断用户输入的线程?