WPF多线程

mac2022-06-30  23

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

public void 工作_Task(){Dispatcher x = Dispatcher.CurrentDispatcher; // 取得当前工作线程 // 另开线程工作 Task < int > 计数 = new Task < int > (() => { return 计数方法(); });计数.ContinueWith(工作完毕后方法); // 工作完毕后执行的方法 计数.Start(); // 开始工作 } public void 工作完毕后方法(Task < int > 参数){ if (参数.IsCompleted) // 正常工作完毕 {var 结果 = 参数.Result; // 取得结果 // 处理结果. // 本方法非界面线程.如果需要在界面线程操作,需要转移到界面线程 }} int c; public int 计数方法(){ return c ++ ;}

第2种方法用线程.

public void 工作_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 后台线程; public void 线程初始化(){后台线程 = new BackgroundWorker();后台线程.WorkerSupportsCancellation = true ; // 可以取消 后台线程.DoWork += new DoWorkEventHandler(后台线程_DoWork);后台线程.RunWorkerCompleted += new RunWorkerCompletedEventHandler(后台线程_RunWorkerCompleted); } public void 启动后台线程(){后台线程.RunWorkerAsync();} void 后台线程_RunWorkerCompleted( object sender, RunWorkerCompletedEventArgs e){ // 工作完毕的方法 } void 后台线程_DoWork( object sender, DoWorkEventArgs e){ // 工作方法 }

转载于:https://www.cnblogs.com/LYunF/archive/2012/11/06/2757003.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)