class Program
{
            static void Main()
            {
            AsyncCallback callback = new AsyncCallback(Callback);
            Func f = Console.ReadLine;
            f.BeginInvoke(Callback, null);
            Thread.Sleep(Timeout.Infinite);
            }

            static void Callback(IAsyncResult result)
            {
            AsyncResult async = result as AsyncResult;
            Func f = async.AsyncDelegate as Func;
            string s = f.EndInvoke(result);
            Console.WriteLine(s);
            Environment.Exit(0);
            }
}
</pre>