0

私はこの簡単なコードを持っています

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 もマークする必要があるという事実ですか?

4

0 に答える 0