public static void Main_S() { Console.WriteLine("===== 同步调用 SyncInvokeTest ====="); AddHandler handler = new AddHandler(AddClass.Add); int result = handler.Invoke(1, 2, 3); Console.WriteLine("继续做别的事情。。。"); Console.WriteLine(result); }
private void AddWordButton_Click(object sender, EventArgs e) { AddWord(); if (AddedWords.Count == 0) { return; } AddHandler?.Invoke(this, null); Close(); }
/// <summary> /// 同步方法 /// </summary> public void Synchronized_Method() { Console.WriteLine("===== 同步调用 SyncInvokeTest ====="); AddHandler handler = new AddHandler(Add); //invoke后阻塞主进程,直到handler执行完毕 int result = handler.Invoke(1, 2); Console.WriteLine("继续做别的事情。。。"); Console.WriteLine(result); }
public static void SynchronizationFun() { Console.WriteLine("===== 同步调用 SyncInvokeTest ====="); AddHandler handler = new AddHandler(Additive.Add); //同步的效果就是当前的线程必须阻塞,得到result结果的返回,在winform下就会造成界面的假死 //“委托人”去Invoke int result = handler.Invoke(1, 2); //直到委托执行的方法完全完成 下面才会执行 Console.WriteLine("继续做别的事情。。。"); Console.WriteLine(result); Console.ReadKey(); }