我有这个简单的代码
static string ParentMethod()
{
1 var response = ChildMethod("param1")
2 string value = response.Result;
3
4 return value;
}
static async Task<string> ChildMethod(string param1)
{
1 string value = "";
2
3 var response = await Task.Run(() => SomeAPIDLL.SendSsMessage(param1));
4
5 if (response.RestExcpetion != null)
6 value = response.RestException.Message;
7
8 return value;
}
不确定为什么但是在ChildMethod上,在Task.Run之后,调试器立即指回ParentMethod第2行,此时它执行调用(因为我收到一条短信),但后来从未读取结果并挂起无处可去,客户端挂起,VS永远无法恢复,我必须停止调试才能恢复正常。
问题是这个事实,如果我有一个ChildMethod Async,我必须将所有父调用方法也都标记为Async,一直到API公共方法?