|
// 这是一个异步调用的例子,SimpleMath中有一个方法BeginAdd的异步方法。谁能把SimpleNath类改成包含 beginxxx 和 endxxx 两个方法的形式,就像socket 中的beginxxx 和 endxxx 那样的异步调用。
using System;
using System.Runtime.Remoting.Messaging;
using System.Threading;
namespace DemoDelegate
{
public delegate int AddDelegate(int n1,int n2);
class Class1
{
static void Main(string[] args)
{
SimpleMath math = new SimpleMath();
IAsyncResult asyncResult = math.BeginAdd(2,5,new AsyncCallback(AddCallback));
Console.WriteLine("按回车终止程序....");
Console.Read();
}
// 加法回调函数
private static void AddCallback(IAsyncResult ar)
{
AsyncResult async = (AsyncResult)ar;
AddDelegate d= (AddDelegate)async.AsyncDelegate;
int result = d.EndInvoke(ar);
Console.WriteLine("2 + 5 = " + result);
}
}
public class SimpleMath
{
// 加法运算
public int Add(int n1,int n2)
{
Thread.Sleep(2000);
return n1 + n2;
}
// 使用异步来处理的加法运算
public System.IAsyncResult BeginAdd(int n1,int n2, AsyncCallback callback )
{
AddDelegate d = new AddDelegate(this.Add);
return d.BeginInvoke(n1,n2,callback, null);
}
}
}
|
|