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...
          }
     }

  • 相关阅读:
    es6-箭头函数
    高度自适应的div
    移动端css水平垂直居中
    跨域2-常用的跨域方式
    跨域1-CORS跨域
    前端路由分类
    K8S系列-2.常用命令
    Git多分支管理
    微服务-01初识
    VirtualBox虚拟Centos磁盘文件扩容
  • 原文地址:https://www.cnblogs.com/Drizzle/p/574932.html
Copyright © 2011-2022 走看看