public class test
{
public async Task Go()
{
await PrintAnswerToLife();
Console.WriteLine("done");
}
public async Task PrintAnswerToLife()
{
int answer = await GetAnswerToLife();
Console.WriteLine(answer);
}
public async Task<int> GetAnswerToLife()
{
await Task.Delay(5000);
int answer = 21 * 2;
return answer;
}
}
main()メソッドでGoを呼び出したい場合、どうすればよいですか?私はc#の新機能を試しています。非同期メソッドをイベントにフックでき、そのイベントをトリガーすることで非同期メソッドを呼び出すことができます。
しかし、mainメソッドで直接呼び出したい場合はどうなりますか?どうやってやるの?
私は次のようなことをしました
class Program
{
static void Main(string[] args)
{
test t = new test();
t.Go().GetAwaiter().OnCompleted(() =>
{
Console.WriteLine("finished");
});
Console.ReadKey();
}
}
しかし、それはデッドロックのようで、画面には何も印刷されません。