gpt4 book ai didi

c# - 来自后台 worker 的文件对话框

转载 作者:行者123 更新时间:2023-11-30 17:12:31 25 4
gpt4 key购买 nike

在维护一些代码时,我发现我们在 background worker 中有无限挂断。工作人员需要访问脚本文件。如果没有定义脚本文件,原始代码编写为弹出一个文件对话框,以允许用户选择一个。它看起来像这样:

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 的内容,但是几乎所有调用方法都需要您从控件中调用它们。有问题的后台 worker 从一个单独的类运行,它不扩展Control。为此,我是否使用通过 bgworker 调用类的形式?还是有另一种方法可以中断用户输入的线程?

最佳答案

不建议从后台工作程序 DoWork 事件处理程序调用 UI。 BackgroundWorker 旨在在非 UI 线程上工作以保持 UI 响应。在使用 RunWorkerAsync 启动 BackgroundWorker 对象之前,您应该询问任何文件信息。

关于c# - 来自后台 worker 的文件对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10624416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com