2016-12-23 11 views
0

、私は「Task.Delay(タイムアウト)」の完成割合を知りたいTask.Delay()の進捗状況を取得しますか?長時間実行手順の進捗状況を取得しますか?手順で

Random rnd = new Random(); 
var timeout = rnd.Next(3000,10000); 
System.Diagnostics.Debug.WriteLine(timeout); 

await Task.Delay(timeout); 

を持っています。あるいは、プロシージャ全体の完成したパーセンテージを得ることができる関数がありますか?

一般的に、長期間の実行タスクの進捗状況を取得するにはどうすればよいですか?特定の機能がそれをするのに役立つのですか?

ありがとうございました!

+0

遅延が始まると思っていた方法の1つはタイマーです。その後、私は毎秒タイマーからの応答を得ることができます。次に、percentage = timeCountedByTimer/timeout * 100とします。これは大丈夫ですか? –

+0

大きなタスクを複数の小さなタスクに分割し、サブタスクを1つずつ実行する必要があります。進歩は容易に計算できます。長い時間を遅らせるような大きな仕事は、進捗状況を報告する機会を与えません。 –

答えて

1

報告の進捗状況の標準的な方法は、IProgressです。 Task.DelayIProgressを使用していないので、大きな遅延を複数の小さな遅延に分割することで自分で行う必要があります。

関連する問題