public class Test { public void Todo(string message) { Console.WriteLine("{0} {1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), message); } private Action<string> _todo = null; public Test() { _todo = Todo; } public IAsyncResult BeginTodo(string message, AsyncCallback callback, object state) { return _todo.BeginInvoke(message, callback, state); } public void EndTodo(IAsyncResult ar) { _todo.EndInvoke(ar); } } public class Program { static void callback1(IAsyncResult ar) { Test test = (Test)ar.AsyncState; test.EndTodo(ar); } static void callback2(IAsyncResult ar) { Test test = (Test)ar.AsyncState; test.EndTodo(ar); } static void callback3(IAsyncResult ar) { Test test = (Test)ar.AsyncState; test.EndTodo(ar); } static public void Main(string[] args) { Test test1 = new Test(); test1.BeginTodo("test1", callback1, test1); Test test2 = new Test(); test2.BeginTodo("test2", callback2, test2); Test test3 = new Test(); test3.BeginTodo("test3", callback3, test3); Console.ReadKey(); } } |