【发布时间】:2015-08-17 05:31:19
【问题描述】:
我有一个异步方法MyActionAsync,它接收作为参数的异步Func<int, Task> 作为回调。
该方法正确地调用了 asyncCallback,但它在 asyncCallback 中的所有 await 被执行之前跳过了该步骤。
这给我带来了一些大问题。
我如何/我可以使用什么来确保 await asyncCallback(id) 之类的东西只有在 asyncCallback 完全执行后才会跳过。
public class MyService
{
public async Task<int> MyActionAsync(int id, Func<int, Task> asyncCallback)
{
// 1. do something
// 2. execute the callback function
// Steps over this step after the first await is finished, and not when all of them are finished
await asyncCallback(id);
// 3. return
return id;
}
}
async Task Test()
{
Func<int, Task> asyncCallback =
async (id) =>
{
var products = await _unitOfWork.Products.Where(p => p.UserId == id).ToListAsync();
var pictures = await _unitOfWork.Pictures.Where(p => p.UserId == id).ToListAsync();
};
MyService service = new MyService();
await service.MyActionAsync(1, asyncCallback);
}
【问题讨论】:
-
你确定没有异常发生吗?
-
是什么让你觉得
asyncCallback没有完成? -
确实,我在 asyncCallback 内的一行中有一个错误,这就是它没有完全评估它的原因..我的错误
标签: c# asp.net asynchronous delegates async-await