Asp.net mvc Asp.net MVC控件执行2个异步任务

Asp.net mvc Asp.net MVC控件执行2个异步任务,asp.net-mvc,c#-4.0,asynchronous,task-parallel-library,Asp.net Mvc,C# 4.0,Asynchronous,Task Parallel Library,我想检查一下这是否可能,我有一个MVC控制器操作方法(POST),它应该有两个并行任务,完成其中一个任务应该根据已完成任务的结果返回视图 任务不是具有异步选项的aweb服务。假设它更像是创建了一堆文件。我真的希望我的任务像这样简单 private static string DoStuff(int sleepTime, string input) { Thread.Sleep(sleepTime); return input; } 任务是这样的-但我不知道这是否正确,

我想检查一下这是否可能,我有一个MVC控制器操作方法(POST),它应该有两个并行任务,完成其中一个任务应该根据已完成任务的结果返回视图

任务不是具有异步选项的aweb服务。假设它更像是创建了一堆文件。我真的希望我的任务像这样简单

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异步任务DelayTimerCallAsync()
{
字符串msgs=DoStuff(Convert.ToInt32(
ConfigurationManager.AppSettings[“DelayTimer”]),
“超时”);
返回MSG;
}
如果我的问题不清楚或者您需要更多信息,请告诉我

下面更新我的两个任务如下

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);
}
public Task DelayTimerCallAsync(CancellationToken CancellationToken)
{
返回任务。运行(()=>
{
字符串消息=null;
返回DelayTimer();
},取消令牌);
}
公共任务BlazeCallAsync(CancellationToken CancellationToken)
{
返回任务。运行(()=>
{
字符串消息=null;
返回调用();
},取消令牌);
}

我怎样才能给他们打电话并使用
Task.whany(task1,task2)

不确定我是否理解这个问题,但我会尝试一下

假设您有“工作”要做(通常是同步运行的),但希望将其封装在异步方法中,它看起来有点像以下内容:

public Task<String> DelayTimerCallAsync(CancellationToken cancellationToken)
{
  return Task.Run(() => {
    String messages = null;
    /* do work here (assign messages a value) */
    return messages;
  }, cancellationToken);
}
然后,您就可以执行
任务
方法,而无需
等待
。比如:

// (referencing DelayTimeCallAsync above:
String messages = AsynHelper.RunSync(DelayTimeCallAsync(CancellationToken.None));

你以前也问过这个问题吗?这有点不清楚,但从我看来,如果你不打算使用
async
/
任务
,你就会错过任务的要点。不妨将其内联或使用线程。@AD.net我以前确实问过这个问题,但没有得到任何答案。我想我试图让它更清楚。这2个任务将是async类型并返回字符串。例如…请参阅我的问题更新。因此,您希望从同步方法中运行异步方法(在同步方法中,您将不会使用
async
/
wait
)?第一个是我正在寻找的。但我将有两个任务,从主类开始,完成其中任何一个任务都会返回…就像使用Task.whenny(task1,task2)
// (referencing DelayTimeCallAsync above:
String messages = AsynHelper.RunSync(DelayTimeCallAsync(CancellationToken.None));