Хитрость заключается в том, чтобы как-то построить выражение из чего-то, что возвращает void. И, к счастью, BeginInvoke делает именно это. Теперь нам нужно предотвратить завершение программы до того, как BeginInvoke напишет текст. Первоначально я просто использовал цикл для этого, но, как показал SLaks, мы можем использовать вместо него .AsyncWaitHandle.WaitOne()
, потому что он возвращает bool
.
Поместите это в функцию Main
:
if(((System.Action<string>)System.Console.WriteLine).BeginInvoke("Hello world",null,null).AsyncWaitHandle.WaitOne())
{
}