私がやろうとしていることに対して、最善のアプローチは何でしょうか。私のアプリケーションには、バックグラウンドダウンロード操作を開始し、ダウンロードしたファイルに応じていくつかのアクションを実行するボタンがあります。
これは、「必要なデータがダウンロードされるとすぐにゲームが開始される」という状況のようなもので、ユーザーは引き続きメインフォームを使用できます。
private void btnStart_Click(object sender, EventArgs e)
{
//execute some code
Downloader.RunWorkerAsync(files); //this worker reports progress to the main form
while (Downloader.IsBusy)
Application.DoEvents();
//execute some more code
}
私はそれをそのようにすることはまったく良くないことを知っています。
ダウンロード操作中にメインフォームが応答し続ける必要があるため、ダウンロードコードを同期的に実行できません。また、最終的なコードをダウンロード完了イベントに入れることもできません。これは、プログラムの他の多くの領域で使用され、「一般的な」ダウンロードシステムのままである必要があるためです。
だから、私がやりたいことをする方法はありますか?私は他の非同期メソッドの経験がありません。