Task.Run没有阻止,也没有继续下面的代码

时间:2013-11-13 18:56:57

标签: c# task-parallel-library async-await

我有这个简单的代码

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公共方法?

0 个答案:

没有答案