【发布时间】:2011-11-05 02:33:23
【问题描述】:
我是 C# 新手,但我已经完成了很多 java 工作。这是我的问题:我正在尝试从不是 UI 线程的线程打开“SaveFileDialog”。
这正是我尝试做的:
public partial class Form1: Form
{
public string AskSaveFile()
{
var sfd = new SaveFileDialog();
sfd.Filter = "Fichiers txt (*.txt)|*.txt|Tous les fichiers (*.*)|*.*";
sfd.FilterIndex = 1;
sfd.RestoreDirectory = true;
DialogResult result = (DialogResult) Invoke(new Action(() => sfd.ShowDialog(this)));
if(result == DialogResult.OK)
{
return sfd.FileName;
}
return null;
}
}
此方法将始终从与拥有表单的线程不同的线程中调用。问题是当我执行这段代码时,“Form1”冻结并且“SaveFileDialog”没有出现。
你有什么线索可以帮助我显示来自独立线程的对话框吗?
【问题讨论】:
标签: c# winforms multithreading dialog