我有一个接口来提供服务来制作异步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);
}
在等待编译器告诉我无法等待,因为它返回通用集合
答案 0 :(得分:0)
假设您无法更改界面的签名,您可以在pages = await Task.Run(() => this._ienter.AddPages(path, book));
中将调用包装到实现中:
AddPages
这使用匿名委托来调用您的方法。
一个更重要的问题是,您认为等待{{1}}方法所带来的好处是什么 - 仅仅因为异步/等待是新的热点并不意味着一切都会从改造中受益。