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)
根据您使用的实现方式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)
这将保证执行顺序,牺牲并行性.
归档时间: |
|
查看次数: |
1842 次 |
最近记录: |