zoukankan      html  css  js  c++  java
  • c# Invoke和BeginInvoke 区别


    解释:
    1。UI执行A
    2。UI开线程beginInvokeThread,B和C同时执行,B执行在线程UI上,C执行在线程beginInvokeThread上。
    3。beginInvokeThread封送消息给UI,然后自己继续执行代码D,UI处理完消息后,处理invokeThread封送的消息,即代码段E
    有点疑问:如果UI先执行完毕,是不是有可能过了段时间beginInvokeThread才把消息封送给UI,然后UI才继续执行封送的消息E。如图浅绿的部分。


    Control的BeginInvoke是相对于调用它的线程,即beginInvokeThread相对是异步的。
    因此,我们可以想到。如果要异步取耗费长时间的数据,比如从数据库中读大量数据,我们应该这么做。
    (1)如果你想阻止调用线程,那么调用代码(三),代码段D删掉,C改为耗费长时间的操作,因为这个操作是在另外一个线程中做的。代码段E改为更新界面的方法。
    (2)如果你不想阻止调用线程,那么调用代码(四),代码段D删掉,C改为耗费长时间的操作,因为这个操作是在另外一个线程中做的。代码段E改为更新界面的方法。

  • 相关阅读:
    use sortedset
    关于WPF 的快捷键
    关于WPF的UI控件焦点问题
    Hive2.x 版本的安装及配置 以及要注意的事项
    nginx长连接设置
    nginx响应时间监控脚本
    [转]细说Redis监控和告警
    mongodb高级查询
    Python导入自定义包或模块
    [转]大数据hadoop集群硬件选择
  • 原文地址:https://www.cnblogs.com/weixing/p/2342762.html
Copyright © 2011-2022 走看看