委托的 BeginInvoke 方法和 EndInvoke 方法可以实现异步执行委托方法。这允许委托的方法在后台线程中执行,而不会阻塞当前线程。小编在之前的webform开发中遇到下载进度条卡死的问题就是用它解决的。
案例:
namespace ConsoleApplication1
{
class Program
{
//创建委托
delegate void PrintDelegate(string message);
//静态方法
static void PrintMessage(string message)
{
for (int i = 0; i < 10000; i++)
{
Console.WriteLine(message + "(" + i + ")");
}
}
static void Main(string[] args)
{
//委托调用方法
PrintDelegate print = PrintMessage;
//表示异步操作的状态
IAsyncResult result = print.BeginInvoke("执行异步方法", null, null);
//执行异步委托
print.EndInvoke(result);//这里不会卡死
Console.WriteLine("Begin 后的方法");
Console.ReadKey();
}
}
}