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

  • 相关阅读:
    Java输入/输出
    JSP第二天 JavaBean加强
    JSP 第一天学习
    java集合
    Github配置SSH Keys
    Android Fragment学习笔记
    Android开源资源整理
    centos终端显示字母重叠
    好用的log查看工具log2console
    .NET 日期转换
  • 原文地址:https://www.cnblogs.com/Drizzle/p/574932.html
Copyright © 2011-2022 走看看