WebサービスでRegister()
メソッドを非同期に(C#を使用して)呼び出す必要があります。実際のRegister
メソッドをWebサービスで実装しても値は返されません。しかし、メソッドが失敗した場合は例外がスローされます。これを考えると、次のコードは大丈夫ですか?Webサービスメソッドを非同期で呼び出す
public void RegisterProduct(string productName)
{
await RegisterProductAsync();
}
private async static Task RegisterProductAsync(string productName)
{
try
{
await myWebService.Register(productName);
}
catch(Exception ex)
{
LogException(ex);
}
}
ありがとうございました。ルール「非同期」すべての道に続き
private async static Task<int> RegisterProductAsync(string productName)
{
try
{
await Task.Run(() => myWebService.Register(productName));
return 0;
}
catch (Exception ex)
{
LogException();
return 1;
}
}
public async Task<int> RegisterProduct(string productName)
{
var result = await RegisterProductAsync(productName);
return result;
}
:
コードレビューをリクエストしていますか?それはhttps://codereview.stackexchange.comの方がよいでしょう。このコードに問題がある場合は、説明してください。 –
(1) 'async'メソッドは' void'ではなく 'Task'を返すべきです。 (2)ロギングには実際に捕捉された例外が含まれているはずです。 (3)なぜ呼び出すメソッドが操作を待っていないのですか? 「火と忘れ」は忘れ去られる厄介な傾向があります。非同期操作を隠してはいけません。呼び出しコードにそれらについて知る必要があります。 – David