• 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)
    {
    //工作方法
    }
    复制代码
  • 相关阅读:
    GNU计划的起因及其现状
    【KVM新概念】 虚拟机CPU热拔插
    Amazon vs Google 云服务
    【笨木头Cocos2dx 039】战争迷雾效果 第02章_先把地图加进来
    【C++11】新特性——auto的使用
    Netty4 SEDA 事件驱动原理分析
    error ,exception
    Compiling Java with makefile
    (二)Centos7下Yum更新安装PHP5.5,5.6,7.0
    CentOS7.0下安装FTP服务的方法
  • 原文地址:https://www.cnblogs.com/LYunF/p/2757003.html
Copyright © 2020-2023  润新知