static void Main(string[] args) { var currentThread = Thread.CurrentThread; Console.WriteLine($"Поток {currentThread.ManagedThreadId} работает..."); //first step: Get Problem with thread //var result = Sum(10, 15); //second step: trying to use delegate //SumDelegate sumDelegate = Sum; //var result = sumDelegate.Invoke(10, 15); //third step: async call method from delegate //SumDelegate sumDelegate = Sum; //var asyncResult = sumDelegate.BeginInvoke(10, 15, null, null); //while (!asyncResult.IsCompleted) //{ // Console.WriteLine("Дожидаемся ответа"); // Thread.Sleep(500); //} //var result = sumDelegate.EndInvoke(asyncResult); //fourth step: awareness of the inevitable. Function call back. SumDelegate sumDelegate = Sum; sumDelegate.BeginInvoke(10, 15, SumCallback, "Результат длительной операции сумма"); Console.WriteLine($"Поток {currentThread.ManagedThreadId} заканчивает работу"); Console.ReadLine(); }
static void Main(string[] args) { AsyncCallback callback = new AsyncCallback(MyCallback); int state = 1000; SumDelegate d = new SumDelegate(Add); d.BeginInvoke(100, 200, callback, state); Console.WriteLine("Press any key to exit"); Console.ReadLine(); }
public static void Main(){ SumDelegate sumDelegate1 = new SumDelegate(Sum); SumDelegate sumDelegate2 = new SumDelegate(Sum); IAsyncResult result1 = sumDelegate1.BeginInvoke(1, 2, new AsyncCallback(WrapUp), sumDelegate1); IAsyncResult result2 = sumDelegate2.BeginInvoke(3, 4, new AsyncCallback(WrapUp), sumDelegate2); while(!(result1.IsCompleted && result2.IsCompleted)){ Thread.Sleep(10); } Console.WriteLine("\nMain thread exiting now...bye!"); } // end Main() method
public static void Main(){ SumDelegate sumDelegate1 = new SumDelegate(Sum); SumDelegate sumDelegate2 = new SumDelegate(Sum); IAsyncResult result1 = sumDelegate1.BeginInvoke(1, 2, null, null); IAsyncResult result2 = sumDelegate2.BeginInvoke(3, 4, null, null); while(!(result1.IsCompleted && result2.IsCompleted)){ Thread.Sleep(100); } int sum1 = sumDelegate1.EndInvoke(result1); int sum2 = sumDelegate2.EndInvoke(result2); Console.WriteLine("The result of the first async method call is: {0}", sum1); Console.WriteLine("The result of the second async method call is: {0}", sum2); Console.WriteLine("\nMain thread exiting now...bye!"); } // end Main() method
static void Main(string[] args) { Console.WriteLine("запуск приилож"); int mainThredId = Thread.CurrentThread.ManagedThreadId; Console.WriteLine("Поток-- {0}...", mainThredId); SumDelegate sumDelegate = new SumDelegate(Sum); // sumDelegate.Invoke(2.3, 5.6); //IAsyncResult result= sumDelegate.BeginInvoke(2.3, 5.6, null, null); IAsyncResult result = sumDelegate.BeginInvoke(2.3, 5.6, new AsyncCallback((incomingResult) => Console.WriteLine(sumDelegate.EndInvoke(incomingResult))), null); Console.WriteLine("Завершение работы"); Console.ReadLine(); }