Clinet/Server在工作线程中刷新页面数据的方法
生活随笔
收集整理的這篇文章主要介紹了
Clinet/Server在工作线程中刷新页面数据的方法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Worker線(xiàn)程不能修改UI線(xiàn)程的狀態(tài)(比如文本框里面的內(nèi)容)。
解決的辦法是寫(xiě)一個(gè)用來(lái)更新文本框內(nèi)容的函數(shù),然后在Worker線(xiàn)程里面通過(guò)BeginInvoke來(lái)利用delegate調(diào)用這個(gè)函數(shù)更新文本框。
具體代碼如下: void ThreadEntry(){int i = 1;string name = Thread.CurrentThread.Name;while (i > 0){Thread.Sleep(1000);dsync.WaitOne(); //WaitOne方法是阻塞方法,如果string msg = string.Format("The current index is {0}", i);this.BeginInvoke(new ShowDelegate(ShowMsgBox), msg);i++;}} 調(diào)用方法: private void OK_Click(object sender, EventArgs e){Thread worker = new Thread(ThreadEntry);worker.Start();}更新方法:private void ShowMsgBox(string tmp){logOutput.Text += tmp + "\r\n";}
解決的辦法是寫(xiě)一個(gè)用來(lái)更新文本框內(nèi)容的函數(shù),然后在Worker線(xiàn)程里面通過(guò)BeginInvoke來(lái)利用delegate調(diào)用這個(gè)函數(shù)更新文本框。
具體代碼如下: void ThreadEntry(){int i = 1;string name = Thread.CurrentThread.Name;while (i > 0){Thread.Sleep(1000);dsync.WaitOne(); //WaitOne方法是阻塞方法,如果string msg = string.Format("The current index is {0}", i);this.BeginInvoke(new ShowDelegate(ShowMsgBox), msg);i++;}} 調(diào)用方法: private void OK_Click(object sender, EventArgs e){Thread worker = new Thread(ThreadEntry);worker.Start();}更新方法:private void ShowMsgBox(string tmp){logOutput.Text += tmp + "\r\n";}
BTW,如果需要控制工作線(xiàn)程的執(zhí)行,阻塞和繼續(xù)執(zhí)行,可以使用System.Threading.ManualResetEvent類(lèi)的?WaitOne()、Set()、Reset()方法。
?
轉(zhuǎn)載于:https://www.cnblogs.com/haizzh/p/6952246.html
總結(jié)
以上是生活随笔為你收集整理的Clinet/Server在工作线程中刷新页面数据的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android wear qq 微信,A
- 下一篇: 伺服电机选型方法