0
我有一个调用外部web服务的web服务。外部服务在3-4秒后响应。同步web服务内的异步调用
现在所有的调用都是同步的,但是使用异步调用是否有意义(下面的示例)?
它是否有助于提高性能(不会阻塞线程)? GetData()的第一行是不是阻塞了线程?
谢谢。
public class MyService : WebService
{
[WebMethod]
public string GetData()
{
string response = ExecuteRequest(externalUrl, someContent).Result;
return response;
}
private async Task<string> ExecuteRequest(string url, string content)
{
var httpResponse = await new HttpClient().PostAsync(url, new StringContent(content));
string responseStr = await httpResponse.Content.ReadAsStringAsync();
return responseStr;
}
}
为什么不让'GetData'异步? –
这不需要修改呼叫我的服务的客户吗? – Cosmin
我不知道如何死锁线程(http://stackoverflow.com/questions/13140523/await-vs-task-wait-deadlock)将有助于性能:)...很难得到异步方法调用同步代码正常工作,如果你知道你在做什么,如果你不知道它是一个非常糟糕的主意。 –