a= new Thread(new ThreadStart(delegate { ThreadMethod(); }));
a.Start();
如題,我采用這個方法開啟子線程,然後在子線程中執行耗時的代碼,並且調用委托來更新UI界面控件。
但是我發現一個問題就是:比如我在代碼裡寫了往textBox裡面添加一些字符串,然後後面接著執行耗時的代碼。我發現只有當整個代碼執行完了,textBox裡才會顯示添加的數據。但是如果在每條往textBox裡添加數據的後面加一句Thread.Sleep()語句,就可以看到是先往textBox裡添加的數據了。這點我覺得很奇怪啊,以前安卓開發也遇到過這樣的事情,就是往控件裡添加數據展示給用戶看,如果不加Threa.Sleep()語句的話,就得等數據全部添加完畢之後才能看到,而不是添加一句顯示一句,為什麼啊?
小伙子,在工作線程中去刷新UI,就是調用UI線程的東西的話,如果你想要做到同步的效果,可以使用Invoke就可以。異步效果的話,就是BeginInvoke,至於怎麼調用,不用我舉例子吧。
http://wenku.baidu.com/link?url=hz6vSo2MVAX9NLB4LjSq_ajQg-EVQMsbOpVid-ut3aSxn0_3Vj_yjoUtV8RgkCg2SaZjFSMloxQon5LDEfu7kRQaKXNAG-GsTeCscmZIoQu