Asp.net mvc MVC4“;不能等待”;
下面的代码片段导致了一个我很难理解的编译错误 错误1无法等待System.Collections.Generic.List“” 有什么建议吗Asp.net mvc MVC4“;不能等待”;,asp.net-mvc,asynchronous,asp.net-mvc-4,Asp.net Mvc,Asynchronous,Asp.net Mvc 4,下面的代码片段导致了一个我很难理解的编译错误 错误1无法等待System.Collections.Generic.List“” 有什么建议吗 public class NewsController : Controller { public async Task<ActionResult> Index(int page=1) { NewsNavigator News = new NewsNavigator(); await News.L
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;
}
公共类新闻控制器:控制器
{
公共异步任务索引(int page=1)
{
NewsNavigator News=新的NewsNavigator();
等待消息。加载(第页);
...
返回视图(新闻);
}
}
公共列表加载(int page=DefaultPage,int pageSize=DefaultPageSize,string filter=DefaultFilter)
{
//DBU新闻
...
返回加载的新闻;
}
Await应用于返回任务的方法调用的结果
你不能称之为新闻,因为新闻不是一项任务。创建一个任务并将News.Load方法传递给它
NewsNavigator News = new NewsNavigator();
var newsLoadTask = Task.Factory.StartNew(() => News.Load(page));
await newsLoadTask;
...
有更简单的语法吗?在C#5.0和mvc4hmm中,我不确定。。。您可以将NewsNavigator类设置为静态并去掉第一行?您可以始终使用
wait Task.Run(()=>News.Load(page))代码>此外,请确保任何使用者都包含返回类型的dll。Visual Studio 2012在未包含dll时给出了一条毫无帮助的错误消息“Cannot wait”(无法等待)。静态对象有一个坏习惯,即在框架的其余部分(本例中为asp.net)准备就绪之前就准备就绪。请看一下依赖项注入。