2012-04-28 8 views
4

次のコードスニペットは、コンパイルエラーの原因となっており、わかりにくいです。MVC4「待機できません」

エラー1は、System.Collections.Generic.List '<BusinessLogic.News>'

任意の提案を待つことができませんか?

public class NewsController : Controller 
{ 
    public async Task<ActionResult> Index(int page=1) 
    { 
     NewsNavigator News = new NewsNavigator(); 
     await News.Load(page); 
     ... 

     return View(News); 
    } 
} 



    public List<News> Load(int page = DefaultPage, int pageSize = DefaultPageSize, string filter = DefaultFilter) 
    { 
     //DBLayer_News 
     ... 
     return LoadedNews; 
    } 

答えて

7

タスクを返すメソッド呼び出しの結果にAwaitが適用されます。

ニュースはタスクではないため、ニュースでは呼び出すことはできません。タスクを作成し、News.Loadメソッドを渡します。

NewsNavigator News = new NewsNavigator(); 
var newsLoadTask = Task.Factory.StartNew(() => News.Load(page)); 
await newsLoadTask; 
... 
+0

より簡単な構文はありますか? C#5.0とmvc4 – RouR

+0

では、NewsNavigatorクラスを静的にして最初の行を取り除くことはできませんか? – c0deNinja

+3

あなたはいつでも 'await Task.Run(()=> News.Load(page));' を使うことができます。また、コンシューマに戻り型のdllが含まれていることを確認してください。 Visual Studio 2012では、dllが含まれていないと、「を待つことはできません」というエラーメッセージが表示されます。 –

関連する問題