zoukankan      html  css  js  c++  java
  • 跨线程更新窗体

    方法1:我不喜欢
    启动异步操作,使用 RunWorkerAsync 方法。
    RunWorkerAsync 采用一个可选的 object 参数,可以使用该参数将变量传递给辅助方法。BackgroundWorker 类公开 DoWork 事件,您的辅助线程通过 DoWork 事件处理程序附加到该事件。

    DoWork 事件处理程序采用一个 DoWorkEventArgs 参数,该参数具有 Argument 属性。此属性接收来自 RunWorkerAsync 的参数,并可以传递至 DoWork 事件处理程序中调用的辅助方法。


    RunWorkerCompleted事件在后台线程执行完毕后有主线程调用。可在该事件处理程序中执行界面的更新操作。

    方法2:我喜欢
    在跨线程更新窗体的成员方法中应用如下结构:
    为改造前:
    public   void UpdateControl(int x,inty)
    {
          some code...
    }

    改造后:
    delegate void UpdateControlCallback (int x,int y);
    public void UpdataControl(int x,int y)
    {
       if(this.InvokeRequired)
          { UpdataControlCallback d = new UpdataControlCallback(UpdataControl);
             this.Invoke(d,new object[]{x,y});
          }
       else
          {
             some code...
          }
     }

  • 相关阅读:
    MySQL Execution Plan--合理利用隐式的业务逻辑
    MySQL Table--MySQL外键
    MySQL倒序索引测试2
    MySQL倒序索引测试1
    CCNA-3.硬件介质
    CCNA-2.OSI 7层网络模型
    CCNA-1.认识网络
    windows本地安装Oracle数据库
    扫码登录实现原理
    phpunit 单元测试
  • 原文地址:https://www.cnblogs.com/Drizzle/p/574932.html
Copyright © 2011-2022 走看看