現在、C#でプログラムを作成しています。
・あるフォルダに非同期でファイルを1000個作成するプログラムを作成する
・そのフォルダのすでに作成されているフォルダの数を取得して完了率をプログレスバーに表示する
上記のプログラムを作っているのですが実行すると、あるところでデッドロックが発生してしまいます。
デッドロックを起こすことなく、進捗率を表示することのできる方法があれば知りたいのですがどなたかご教示いただけないでしょうか。
よろしくお願いいたします。
public async void MakeCsvAsync() { await Task.Run(() => { //ファイルの作成 }); loop_progressbar = false; MessageBox.Show("完了しました。"); } private void run() { MakeCsvAsync(); loop_progressbar = true; try { System.Threading.Thread.Sleep(5000); while(loop_progressbar) { int num = Directory.GetFiles(dir, "*", SearchOption.TopDirectoryOnly).Length; System.Threading.Thread.Sleep(2000); progressBar1.Value = num / 1000; } } catch(Exception e) { MessageBox.Show(e.Message); } }
ファイルの作成自体は、1000個で約一分半ほどです。
よろしくお願いいたします。
回答5件
あなたの回答
tips
プレビュー