2016-04-29 8 views
1

私はasync機能をしよう(私は一般的にasyncで非常に良いではありませんよ!)と私はそれがこれをしたいと言うことができますよ:カスタム非同期進行メソッドを作成する方法は?

async public string Count() 
{ 
    int x = 0; 

    for(x; x<100000; x++) 
    { 
     await Task.Delay(1); 
    } 

    return "I'm done"; 
} 

私はその「x」をキャッチしたいと思います他の場所に保存するか、進捗状況を表すテキストボックスにバインドします。 "x/100000"

どうすればいいですか?

+0

インサイド

var progress = new Progress<int>(); // define your own type or use a builtin type progress += (counter) => { //This will be called each time the async func calls Report. //counter will have the reported value } await Count(progress); 

。 [イベント](https://msdn.microsoft.com/de-de/library/8627sbea.aspx) –

答えて

2

Progressクラスのオブジェクトを作成し、Count()メソッドに渡すことができます。 Progressクラスには、非同期タスクが報告するいくつかの進捗状況があるたびに呼び出されるイベントハンドラがあります。進行状況はOnReportメソッドによって報告されます。私はあなたがイベントを毎回バブルUIまでのイベントを発生することを示唆しているCount機能

async public string Count(Progress<int> progress) 
{ 
int x = 0; 

    for(x; x<100000; x++) 
    { 
     await Task.Delay(1); 
     progress.OnReport(x); 
    } 

    return "I'm done"; 
} 
+0

早速返信いただきありがとうございます。その間、私は実際に「進捗状況」を見つけ出し、作業するコードを手に入れましたが、返信が正確に私が尋ねてきたものであり、あなたはそのような単純で分かりやすい答えを与えました。ありがとうございました! :) – DethoRhyne

関連する問題