无法等待通用列表

时间:2016-10-23 17:12:32

标签: c# asp.net-mvc asynchronous

我有一个接口来提供服务来制作异步actionresult  这是接口的代码和类

       public interface Ienter
{
   List<Page> AddPages(string path, Book book);
}


public class enternew :Ienter
{

    private graduationEntities db = new graduationEntities();
    List<Page> temp = new List<Page>();


    public List<Page> AddPages(string path, Book book)
    {
        ///////////
        return temp;
    }
} 

这是控制器

     public class BookController : Controller
    {
    Ienter _ienter ;
    public BookController (Ienter ienter)
    {
        this._ienter = ienter ;
    }
      [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult>  Create([Bind(Include = "ID,Name,Url,CategoryID")] Book book)
    {
        var file = Request.Files[0];
        string path = "";
        var fileName = System.IO.Path.GetFileName(file.FileName);
        path = System.IO.Path.Combine(Server.MapPath("~/PDF/"), fileName);
        file.SaveAs(path);
        book.Url = path;
        List<Page> pages = new List<Page>();
        pages = await this._ienter.AddPages(path,book);
        return View(book);
    }

在等待编译器告诉我无法等待,因为它返回通用集合

1 个答案:

答案 0 :(得分:0)

假设您无法更改界面的签名,您可以在pages = await Task.Run(() => this._ienter.AddPages(path, book)); 中将调用包装到实现中:

AddPages

这使用匿名委托来调用您的方法。

一个更重要的问题是,您认为等待{{1}}方法所带来的好处是什么 - 仅仅因为异步/等待是新的热点并不意味着一切都会从改造中受益。