Clinet/Server在工作线程中刷新页面数据的方法
生活随笔
收集整理的這篇文章主要介紹了
Clinet/Server在工作线程中刷新页面数据的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Worker線程不能修改UI線程的狀態(比如文本框里面的內容)。
解決的辦法是寫一個用來更新文本框內容的函數,然后在Worker線程里面通過BeginInvoke來利用delegate調用這個函數更新文本框。
具體代碼如下: 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++;}} 調用方法: 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";}
解決的辦法是寫一個用來更新文本框內容的函數,然后在Worker線程里面通過BeginInvoke來利用delegate調用這個函數更新文本框。
具體代碼如下: 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++;}} 調用方法: 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,如果需要控制工作線程的執行,阻塞和繼續執行,可以使用System.Threading.ManualResetEvent類的?WaitOne()、Set()、Reset()方法。
?
轉載于:https://www.cnblogs.com/haizzh/p/6952246.html
總結
以上是生活随笔為你收集整理的Clinet/Server在工作线程中刷新页面数据的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android wear qq 微信,A
- 下一篇: JavaScript作用域解析以及例题