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)將有助於性能:)...很難得到異步方法調用同步代碼正常工作,如果你知道你在做什麼,如果你不知道它是一個非常糟糕的主意。 –