我是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”不会出现。您有什么提示可以帮助我从独立的线程中显示对话框吗?