我知道如何制作Async方法但是我说有一个方法可以做很多工作然后返回一个布尔值?
如何在回调中返回布尔值?
澄清:
public bool Foo(){
Thread.Sleep(100000); // Do work
return true;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够使这个异步.
Dav*_*ell 118
从C#5.0,您可以将方法指定为
public async Task<bool> doAsyncOperation()
{
// do work
return true;
}
bool result = await doAsyncOperation();
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 55
有几种方法可以做到这一点......最简单的方法是让异步方法也进行后续操作.另一种流行的方法是传入回调,即
void RunFooAsync(..., Action<bool> callback) {
// do some stuff
bool result = ...
if(callback != null) callback(result);
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是在异步操作完成时引发事件(结果在event-args数据中).
此外,如果您使用的是TPL,则可以使用ContinueWith:
Task<bool> outerTask = ...;
outerTask.ContinueWith(task =>
{
bool result = task.Result;
// do something with that
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
110298 次 |
| 最近记录: |