我有这个简单的代码
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 公共方法?