【发布时间】:2016-09-02 18:03:37
【问题描述】:
我有一个执行 n 步的 MVC 控制器动作 喜欢
Public ActionResult Index()
{
GetDatFromTabelCustomer()
GetDataFromWebApi()
GetDataFromSession()
GetyetAnotherData()
SendItToView()
}
我打算用Task.Run 包装每个方法
然后在 i Process 和 SendItToView() 之前执行 Task.WhenAll()。 但是有很多博客介绍了为什么不应该使用 Task.Run
而是做异步等待,在这种情况下,我真的想运行并行任务而不是以串行方式等待每个任务,
这样做需要从线程池中缝合和拆除线程,但除了 Task.Run 之外,我还有什么其他选择?
示例
Public ActionResult Index()
{
Task taska = Task.Run(() => GetDatFromTabelCustomer())
Task taskb = Task.Run(() => GetDataFromWebApi())
Task taskc = Task.Run(() => GetDataFromSession())
Task taskd = Task.Run(() => GetyetAnotherData())
await taska;
await taskb;
await taskc;
await taskd;
string get resultA = taska.Result
.
.
.
SendItToView()
}
【问题讨论】:
-
您的示例没有意义,在代码的第一位
GetDatFromTabelCustomer()没有返回任何内容,但在第二个示例中它看起来返回了string
标签: vb.net multithreading async-await task