使用委托进行异步调用:
public class TimeConsuming
{
public string OneTimeConsumingMethod()
{
System.Threading.Thread.Sleep(5000); //sleep 5 seconds
return "over";}
}
public class Invoker
{
private delegate string OneTimeConsumingMethodHandler();
public void Execute()
{
OneTimeConsumingMethodHandler h=new OneTimeConsumingMethodHandler(new TimeConsuming().OneTimeConsumingMethod);
//这里开始异步调用
h.BeginInvoke(InvokeCallBack,null);
}
private void InvokeCallBack(IAsyncResult r)
{
//这里方法执行返回处理
var asyncRuslt =
(System.Runtime.Remoting.Messaging.AsyncResult)r;var asyncDel = (OneTimeConsumingMethodHandler)asyncRuslt.AsyncDelegate;
result = asyncDel.EndInvoke(r);
}
}