using System;
using System.Threading ;
using System.Threading .Tasks ;
public class Test
{
public static void Main( )
{
Log( "Main KekAsync before" ) ;
Task.Run ( ( ) => KekAsync( ) ) ;
Log( "Main KekAsync after" ) ;
Log( "Main LilAsync before" ) ;
LilAsync( ) ;
Log( "Main LilAsync after" ) ;
Thread.Sleep ( 1000 ) ;
Log( "Main DjigurdaAsync before" ) ;
DjigurdaAsync( ) .Wait ( ) ;
Log( "Main DjigurdaAsync after" ) ;
}
private static void Log( string message)
{
Console.WriteLine ( "{0}: {1}" , Thread.CurrentThread .ManagedThreadId , message) ;
}
private static Task KekAsync( )
{
Log( "KekAsync before" ) ;
Thread.Sleep ( 1000 ) ;
Log( "KekAsync after" ) ;
return Task.FromResult ( 0 ) ;
}
private static Task LilAsync( )
{
Log( "LilAsync before" ) ;
Thread.Sleep ( 1000 ) ;
Log( "LilAsync after" ) ;
return Task.FromResult ( 0 ) ;
}
private static Task DjigurdaAsync( )
{
Log( "DjigurdaAsync before" ) ;
Thread.Sleep ( 1000 ) ;
Log( "DjigurdaAsync after" ) ;
return Task.FromResult ( 0 ) ;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCUxvZygiTWFpbiBLZWtBc3luYyBiZWZvcmUiKTsKCQlUYXNrLlJ1bigoKSA9PiBLZWtBc3luYygpKTsKCQlMb2coIk1haW4gS2VrQXN5bmMgYWZ0ZXIiKTsKCQkKCQlMb2coIk1haW4gTGlsQXN5bmMgYmVmb3JlIik7CgkJTGlsQXN5bmMoKTsKCQlMb2coIk1haW4gTGlsQXN5bmMgYWZ0ZXIiKTsKCQkKCQlUaHJlYWQuU2xlZXAoMTAwMCk7CgkJCgkJTG9nKCJNYWluIERqaWd1cmRhQXN5bmMgYmVmb3JlIik7CgkJRGppZ3VyZGFBc3luYygpLldhaXQoKTsKCQlMb2coIk1haW4gRGppZ3VyZGFBc3luYyBhZnRlciIpOwoJfQoJCglwcml2YXRlIHN0YXRpYyB2b2lkIExvZyhzdHJpbmcgbWVzc2FnZSkKCXsKCQlDb25zb2xlLldyaXRlTGluZSgiezB9OiB7MX0iLCBUaHJlYWQuQ3VycmVudFRocmVhZC5NYW5hZ2VkVGhyZWFkSWQsIG1lc3NhZ2UpOwoJfQoJCglwcml2YXRlIHN0YXRpYyBUYXNrIEtla0FzeW5jKCkKCXsKCQlMb2coIktla0FzeW5jIGJlZm9yZSIpOwoJCVRocmVhZC5TbGVlcCgxMDAwKTsKCQlMb2coIktla0FzeW5jIGFmdGVyIik7CgkJCgkJcmV0dXJuIFRhc2suRnJvbVJlc3VsdCgwKTsKCX0KCQoJcHJpdmF0ZSBzdGF0aWMgVGFzayBMaWxBc3luYygpCgl7CgkJTG9nKCJMaWxBc3luYyBiZWZvcmUiKTsKCQlUaHJlYWQuU2xlZXAoMTAwMCk7CgkJTG9nKCJMaWxBc3luYyBhZnRlciIpOwoJCQoJCXJldHVybiBUYXNrLkZyb21SZXN1bHQoMCk7Cgl9CgkKCXByaXZhdGUgc3RhdGljIFRhc2sgRGppZ3VyZGFBc3luYygpCgl7CgkJTG9nKCJEamlndXJkYUFzeW5jIGJlZm9yZSIpOwoJCVRocmVhZC5TbGVlcCgxMDAwKTsKCQlMb2coIkRqaWd1cmRhQXN5bmMgYWZ0ZXIiKTsKCQkKCQlyZXR1cm4gVGFzay5Gcm9tUmVzdWx0KDApOwoJfQp9