次のようなメソッドがあります。
static async Task<string> GetGooglePage(ProxyInfo proxy)
{
using (var m=new MyNetworkClass())
{
m.Proxy = proxy;
return await m.GetAsync("http://www.google.com");
}
}
今、非同期ではないメソッドから呼び出して、結果を取得したいと考えています。
私がやろうとしていた方法は次のようなものです:
foreach (var proxy in proxys)
{
try
{
GetGooglePage(proxy.ToProxyInfo()).Wait();
}
catch
{}
lock (Console.Out)
{
Console.Write(current++ + "\r");
}
}
私の問題は、時々GetGooglePage(proxy.ToProxyInfo()).Wait();
デッドロックが発生することです (Visual Studio デバッガーによると、この呼び出しを超えるスタックはありません)。
までずっと async を使用したくありませんMain()
。GetGooglePage
デッドロックの危険を冒さずに同期コードから正しく呼び出すにはどうすればよいですか?