1、定义一个委托
delegate long MyDel(int first, int second);
2、 需异步操作的函数
static int sum(int x,int y)
{
Console.WriteLine("InSide Sum1");
Thread.Sleep(1000);
Console.WriteLine("InSide Sum2");
return x + y;
}
3、回调方法,在异步方法执行完后才执行 ,接收返回结果文章来源:https://www.toymoban.com/news/detail-636669.html
static void callback_(IAsyncResult iar)
{
Console.WriteLine("Inside CallWhenDone");
AsyncResult ar = (AsyncResult)iar; //里氏转换,如果父类中装的是子类的对象,那么可以将这个父类转换为子类对象
Mydel del = (Mydel)ar.AsyncDelegate; //通过AsyncResult类对象的AsyncDelegate属性转化为合适的Mydel委托类型
long result = del.EndInvoke(iar);
Console.WriteLine("The result is: {0}",result);
}
4、异步调用:文章来源地址https://www.toymoban.com/news/detail-636669.html
static void Main(string[] args)
{
Mydel Del = new Mydel(sum);
Console.WriteLine("Before BeginInvoke");
IAsyncResult iar = Del.BeginInvoke(5,6,new AsyncCallback(callback_),Del); //Del焕成null结果也一样
Console.WriteLine("Doing more work in main");
Thread.Sleep(500);
Console.WriteLine("Done with Main.Exiting");
Console.ReadKey();
}
到了这里,关于C# BeginInvoke 加 EndInvoke实现异步操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!