delegate.Invoke 同步
delegate.BeginInvoke 异步,会创建新的线程。
control.Invoke UI线程同步执行
control.BeginInvoke UI线程异步。这里的异步值得是相对于子线程调用BeginInvoke.
delegate Invoke & BeginInvoke 示例如下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ConsoleAppDelegateInvokeTest
{
class Program
{
private delegate int sum(int a, int b);
private static int testFunc(int a, int b)
{
Console.WriteLine(string.Format("Thread_{0} Calculating...", Thread.CurrentThread.ManagedThreadId));
Thread.Sleep(3000);
return a + b;
}
// 等待方式
private static void AsyncWaitTest()
{
Console.WriteLine(string.Format("Thread_{0} is start", Thread.CurrentThread.ManagedThreadId));
sum dl = new sum(testFunc);
IAsyncResult asyncResult = dl.BeginInvoke(3, 4, null, null);
int result = dl.EndInvoke(asyncResult);
Console.WriteLine(string.Format("Thread_{0} is end, result = {1}", Thread.CurrentThread.ManagedThreadId, result));
}
//轮询方式
private static void AsyncCycleQueryTe