将同步方法包装成异步方法,异步方法可以是';等待';在上面
本文关键字:异步方法 在上面 等待 包装 同步方法 | 更新日期: 2023-09-27 18:25:55
我有一个同步调用:
_context.User.Where((u) => (u.UserID == twitterId && u.Type == UserType.Show)).SingleOrDefault();
我需要包装成一个异步的,我可以使用await
关键字等待它。
我怎样才能做到这一点?
谢谢。
您需要使用Task.Run
方法包装同步调用。
var user = await Task.Run(() =>
_context.User
.Where(u => u.UserID == twitterId && u.Type == UserType.Show)
.SingleOrDefault());
请记住,6.0版中的EntityFramework将具有异步接口,因此您将不再需要使用此代码。
QueryableExtensions,添加到EF6中,让这一切变得轻而易举:
await _context.User.SingleOrDefaultAsync(u =>
u.UserID == twitterId
&& u.Type == UserType.Show);
不要忘记在EntityFramework.dll 中引用System.Data.Entity