文武闲人

C#

导航

C#异步委托(异步方法调用)一

当我们的程序顺序执行的时候,如果我们调用了一个很耗时的方法,那么应用程序会使当前的线程处于阻塞状态,直到方法的调用完成再继续执行。这样的方法调用被认为是同步的。如果我们调用了一个远程的方法,那么这个方法的调用可能花费的时间会更长。如果我们不想立即取得方法所返回的结果,或者我们根本就不让方法返回结果的话,这种等待是没有必要的。
如果我们想调用一个这样的方法,当调用之后就立即返回,假如在调用期间发生了异常,我们可以在稍后的时间重起该方法的动作。那我们就可以利用异步委托来把我们的方法做成异步的调用。
听起来很玄的名字,我们不要被它唬住。其实我们并不需要做很多事或我们根本不用做什么事,微软已经为我们做好了。
我们应该注意到所有的委托类型自动提供了两个方法,BeginInvoke()和EndInvoke()方法,这两个方法的签名是由包含他们的委托类型所决定的。
如:
我们自己写了个委托
public delegate string MyDelegate(string name);
那么微软就会自动为我们提供了下面两个方法:
IAsyncResult BeginInvoke(string name,AsyncResult callback,Object o)
以及
string EndInvoke(IAsyncResult result);
两个方法,看看是不是不用我们做什么事呢。
其实当我们直接调用BeginInvoke的时候就是开始异步调用了。

posted on 2008-04-17 17:38  wenwuxianren  阅读(3577)  评论(2编辑  收藏  举报