我怎样才能异步调用两个方法?

tes*_*est 2 .net c# asynchronous web-services

我有以下两种方法:

private static void webservicecalls()
{
   WebServiceOne();
   WebServiceTwo();
}
Run Code Online (Sandbox Code Playgroud)

那么我如何异步调用这两个方法,而不是在调用第二个Web服务之前等待第一个Web服务调用完成?

更新:

现在WebSericeOne和WebServiceTwo都有子调用,例如:

private static void WebServiceOne()
{
    CallOne();
    CallThree();
}

private static void WebServiceTwo()
{
    CallTwo();
    CallFour();
}
Run Code Online (Sandbox Code Playgroud)

所以我需要调用为子调用具有以下序列: -

CallOne();
CallTwo();
CallThree();
CallFour();
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 5

根据您使用的实现方式webserviceone webservicetwo,Web服务工具本身很可能具有完全异步支持,因此首先要做的是:检查并使用异步API而不是同步API.

如果由于某种原因,这不存在 - 你可以做类似的事情:

var task = new Task(() => webservice1());
task.Start();
webservice2();
task.Wait();
Run Code Online (Sandbox Code Playgroud)

(很明显你可以完全同步运行;我假设在上面你只想并行运行它们,并在结束时"加入")

重新编辑:如果订单必须是"一个","两个","三个","四个",那么你不能并行执行它们,所以你不得不在后台运行整个事情:

new Task(() => {
    webservice1();
    webservice2();
}).Start();
Run Code Online (Sandbox Code Playgroud)

这将保证执行顺序,牺牲并行性.