我有一个带有按钮的 Windows 窗体应用程序 - 在按钮的事件处理程序上,我需要使用 SaveFileDialog 下载文件。但我需要在单独的线程上异步执行此操作。
到目前为止,我想出了这段代码,但我不知道我的方法是否有缺陷或正常:
private void btnDownload_Click(object sender, EventArgs e)
{
ThreadStart tStart = new ThreadStart(DoWorkDownload);
Thread thread = new Thread(tStart);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
private void DoWorkDownload()
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.InitialDirectory = "C:\\";
sfd.Filter = "All files (*.*)|*.*";
sfd.FilterIndex = 1;
sfd.RestoreDirectory = true;
if (sfd.ShowDialog() == DialogResult.OK)
{
//do file saving here
}
}
}
我在上面代码中的逻辑是:在按钮点击时创建一个新线程,将 DoWorkDownload() 方法传递给线程,然后启动它;那时它应该进入工作方法 - 但是,在调试时它永远不会进入 DoWorkDownload()。
有谁知道我错过了什么?
谢谢你。