ボタン付きの 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() に入ることはありません。
誰かが私が欠けているものを知っていますか?
ありがとうございました。