在我的数据访问层中,我试图创建返回类型为 Task 的方法。
我无法从实体框架中获取返回类型以返回Task<List<MYtype>>
public static Task<List<ILeaf>> GetLeafs(int doorID)
{
using (var db = new StorefrontSystemEntities())
{
return db.proc_GetDoorLeafs(doorID).ToList<ILeaf>();
};
}
使其正确运行的唯一方法是像这样格式化代码:
public async static Task<List<ILeaf>> GetLeafs(int doorID)
{
return await Task.Run(() =>
{
using (var db = new StorefrontSystemEntities())
{
return db.proc_GetDoorLeafs(doorID).ToList<ILeaf>();
};
});
}
我问的原因是因为我想提供运行异步的选项,还是我没有正确理解这一点?如果我可以只返回一个任务,那么在调用端,如果我想运行异步,我可以选择等待,但如果我想同步运行,我会照常调用该方法。
如果我要返回一个任务,我是否总是必须在方法签名中包含 async 关键字?
我在想这个错误的方式吗?如果我的返回类型为 Task 那么该方法可以选择异步调用还是同步调用?
但是,如果我在方法签名中有 async 和 Task ,那么无论如何该方法都会运行 async ?
谢谢!