zoukankan      html  css  js  c++  java
  • WPF多线程改变界面元素

    第1种用 Task类. 推荐用这个办法

    publicvoid 工作_Task()
    {
    Dispatcher x
    = Dispatcher.CurrentDispatcher;//取得当前工作线程
    //另开线程工作
    Task<int> 计数 =new Task<int>(() => { return 计数方法(); });
    计数.ContinueWith(工作完毕后方法);
    //工作完毕后执行的方法
    计数.Start();//开始工作

    }
    publicvoid 工作完毕后方法(Task<int> 参数)
    {
    if (参数.IsCompleted) //正常工作完毕
    {
    var 结果
    = 参数.Result; //取得结果
    //处理结果.
    //本方法非界面线程.如果需要在界面线程操作,需要转移到界面线程
    }
    }

    int c;
    publicint 计数方法()
    {
    return c++;
    }

    第2种方法用线程

    publicvoid 工作_Thread()
    {
    Dispatcher x
    = Dispatcher.CurrentDispatcher;//取得当前工作线程
    //另开线程工作
    System.Threading.ThreadStart start =delegate()
    {
    //工作函数
    Func<string> fu =new Func<string>(() => { return""; });//工作函数
    var 工作结果 = fu();//开始工作

    //异步更新界面
    x.BeginInvoke(new Action(() =>
    {
    //在界面线程操作 可以使用 工作结果
    }), DispatcherPriority.Normal);
    };
    new System.Threading.Thread(start).Start(); //启动线程
    }

    第3种方法用 BackgroundWorker.

    BackgroundWorker 后台线程;
    publicvoid 线程初始化()
    {
    后台线程
    =new BackgroundWorker();
    后台线程.WorkerSupportsCancellation
    =true; //可以取消
    后台线程.DoWork +=new DoWorkEventHandler(后台线程_DoWork);
    后台线程.RunWorkerCompleted
    +=new RunWorkerCompletedEventHandler(后台线程_RunWorkerCompleted);
    }
    publicvoid 启动后台线程()
    {
    后台线程.RunWorkerAsync();
    }

    void 后台线程_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
    //工作完毕的方法
    }

    void 后台线程_DoWork(object sender, DoWorkEventArgs e)
    {
    //工作方法
    }

  • 相关阅读:
    -bash: fork: Cannot allocate memory 问题的处理
    Docker top 命令
    docker常见问题修复方法
    The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
    What's the difference between encoding and charset?
    hexcode of é î Latin-1 Supplement
    炉石Advanced rulebook
    炉石bug反馈
    Sidecar pattern
    SQL JOIN
  • 原文地址:https://www.cnblogs.com/yuanyuan/p/2474922.html
Copyright © 2011-2022 走看看