zoukankan      html  css  js  c++  java
  • delegate的Invoke和BeginInvoke方法

    C#中的控件和delegate委托方法都有Invoke和BeginInvoke方法,控件的这两个方法网上讲得很多,

    这里就不多说了,下面讲一下delegate的Invoke和BeginInvoke方法。

    Invoke()是一个同步的方法,

    myDelegate d = new myDelegate(Process);
    d.Invoke();
    Console.WriteLine("Thread!!");

    Thread!!消息只有在Process方法执行完之后才会打印出来。

    BeginInvoke()方法则是一个异步方法

    myDelegate d = new myDelegate(Process);
    IAsyncResult ia = d.BeginInvoke(new AsyncCallback(beginCallback), null);
    Console.WriteLine("Thread!!");

    这里的Thread!!消息有可能会在执行Process方法执行之前就打印出来。

    beginCallback方法是一个回调函数,当Process方法执行完后,会调用beginCallback方法。

    myDelegate d = new myDelegate(Process);
    IAsyncResult ia = d.BeginInvoke(new AsyncCallback(beginCallback), null);
    d.EndInvoke(ia);
    Console.WriteLine("Thread!!");

    上面的代码效果上等价于Invoke(),EndInvoke方法会阻塞当前线程,等到Process执行完后调用beginCallback函数,

    回调函数执行结束之后,Thread!!消息才会打印出来。

  • 相关阅读:
    POJ 2388(排序)
    优先队列(堆实现)
    POJ 3322(广搜)
    POJ 1190(深搜)
    POJ 1456(贪心)
    poj 2524 (并查集)
    poj 1611(并查集)
    poj 1521
    poj 1220(短除法)
    css 如何实现图片等比例缩放
  • 原文地址:https://www.cnblogs.com/merlinzjl/p/8531048.html
Copyright © 2011-2022 走看看