【发布时间】:2014-06-18 20:03:59
【问题描述】:
我想检查这是否可能,我有一个 MVC 控制器操作方法 (POST),它应该有 2 个并行任务,完成其中一个任务应该根据已完成任务的结果返回视图。
任务不是具有异步选项的网络服务。假设它更像是创建一堆文件。我真的希望我的任务像这样简单。
private static string DoStuff(int sleepTime, string input)
{
Thread.Sleep(sleepTime);
return input;
}
任务就像 - 但我不知道这是否正确,因为没有“等待”
public async Task<string> DelayTimerCallAsync()
{
string msgs = DoStuff(Convert.ToInt32(
ConfigurationManager.AppSettings["DelayTimer"]),
"Timeout");
return msgs;
}
如果我的问题不清楚或者您需要更多信息,请告诉我。
从下面更新我的两个任务是这样的
public Task<String> DelayTimerCallAsync(CancellationToken cancellationToken)
{
return Task.Run(() =>
{
String messages = null;
return DelayTimer();
}, cancellationToken);
}
public Task<String> BlazeCallAsync(CancellationToken cancellationToken)
{
return Task.Run(() =>
{
String messages = null;
return BlazeCall();
}, cancellationToken);
}
我怎样才能给他们打电话和使用Task.WhenAny(task1, task2)?
【问题讨论】:
-
你之前不是也问过这个问题吗?
-
这有点不清楚,但据我所知,如果你不打算使用
async/task<t>,你会错过任务的重点。不妨保持内联或使用线程。 -
@AD.net 我之前确实问过这个问题,但没有得到任何答案,我试图让它更清楚。
-
这两个任务将是异步类型并返回一个字符串。诸如...查看我的问题已更新。
-
所以你想在同步方法中运行异步方法(你不会有
async/await)?
标签: asp.net-mvc c#-4.0 asynchronous task-parallel-library