我试图制作一个async
函数(一般来说我async
并不是很好!)并且让我说我希望它能做到这一点:
async public string Count()
{
int x = 0;
for(x; x<100000; x++)
{
await Task.Delay(1);
}
return "I'm done";
}
我想抓住那个&#34; x&#34;并将其存储在其他地方,或将其绑定到表示进度的文本框,例如。 "x / 100000"
我该怎么做?
答案 0 :(得分:2)
您可以创建Progress类的对象,并将其传递给Count()
方法。 Progress类有一个事件处理程序,每次异步任务都有一些进度报告时都可以调用它。 OnReport方法报告了进度。
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);
在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";
}