プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2017/11/05

[C#] 非同期メソッドを同期メソッドとして扱いたい場合

event_note2017/11/04 15:36

API として非同期メソッドしか提供されていない場合、それを同期メソッドとして扱う方法です。

GUI アプリなどでは処理を止めるのは基本的に NG ですが、コンソールアプリとかだと同期メソッドで良いということはよくあります。

例えば、.NET Core だと HttpClient クラスの GetStreamAsync メソッドは非同期で、同期メソッドはありません。
これを同期メソッドとして扱いたい場合は Result プロパティを使用します。

HttpClient client = new HttpClient();
var result = client.GetStreamAsync(requestUrl).Result;

戻り値がないメソッド、例えば、Task.Delay などは Wait メソッドで同じことができます。

Task.Delay(1000).Wait();

参考 URL