私はこの簡単なコードを持っています
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 がある場合、API public メソッドまでずっと、すべての親呼び出しメソッド Async もマークする必要があるという事実ですか?