2013-08-02 168 views
8

我有一個同步調用:裹同步方法成一個異步一個可「等待」時

_context.User.Where((u) => (u.UserID == twitterId && u.Type == UserType.Show)).SingleOrDefault(); 

,我需要包裝成一個異步一個我可以等待使用await關鍵字。

我該如何做到這一點?

謝謝。

+2

[相關博客文章(HTTP://blogs.msdn的.com/b/pfxteam /存檔/ 2012/04/24/10287244.aspx)。 –

回答

12

您需要使用Task.Run方法來包裝您的同步呼叫。

var user = await Task.Run(() => 
    _context.User 
      .Where(u => u.UserID == twitterId && u.Type == UserType.Show) 
      .SingleOrDefault()); 

請記住,版本6.0中的EntityFramework將具有異步接口,因此您將不再需要使用此代碼。

3

QueryableExtensions,加入EF6,使之成爲一個微風:

await _context.User.SingleOrDefaultAsync(u => 
    u.UserID == twitterId 
    && u.Type == UserType.Show); 

不要忘記在EntityFramework.dll引用System.Data.Entity