Initial set of Ward sgen annotations (#5705)
[mono.git] / mono / tests / delegate-exit.cs
1 using System;
2 using System.Threading;
3 using System.Runtime.InteropServices;
4
5 class foo {
6         delegate void foo_delegate ();
7         
8         static void function () {
9                 Console.WriteLine ("Delegate method");
10         }
11
12         static void async_callback (IAsyncResult ar)
13         {
14                 Console.WriteLine ("Async callback " + ar.AsyncState);
15         }
16         
17         public static void Main () {
18                 foo_delegate d = new foo_delegate (function);
19                 AsyncCallback ac = new AsyncCallback (async_callback);
20                 IAsyncResult ar1 = d.BeginInvoke (ac, "foo");
21
22                 Console.WriteLine("Waiting");
23                 ar1.AsyncWaitHandle.WaitOne();
24                 Console.WriteLine("Sleeping");
25                 Thread.Sleep(1000);
26                 Console.WriteLine("EndInvoke");
27                 d.EndInvoke(ar1);
28                 Console.WriteLine("Sleeping");
29
30                 Thread.Sleep(1000);
31                 Console.WriteLine("Main returns");
32         }
33 }