當(dāng)WPF應(yīng)用程序運(yùn)行時(shí),默認(rèn)會(huì)創(chuàng)建一個(gè)UI主線程(因?yàn)橹辽傩枰粋€(gè)),并在該UI線程上啟動(dòng)消息循環(huán)。直到消息循環(huán)結(jié)束,應(yīng)用程序就隨即退出。那么,問(wèn)題就來(lái)了,能不能創(chuàng)建新線程,然后在新線程上打開(kāi)一個(gè)新窗口實(shí)例?這樣可以讓不同窗口運(yùn)行在不同的線程上,一定程度上可以相互“獨(dú)立”。
其實(shí)呢,完全的獨(dú)立運(yùn)轉(zhuǎn)似乎不太可能,畢竟嘛,線程是搶占 CPU 時(shí)間片的,即各個(gè)線程間是交替運(yùn)行的,現(xiàn)在處理器基本是N核的,可以結(jié)合并發(fā)一起用(在.net 中,使用 Task 可以自動(dòng)并發(fā))。不管怎么說(shuō)吧,對(duì)UI的響應(yīng)能力應(yīng)該能有所改善的。
有大伙伴一定會(huì)說(shuō),這TMD Easy了,來(lái)直接上一段 Code。
Task theTask = new Task(() => { SecondWindow wind = new SecondWindow(); wind.Show(); }); theTask.Start();
然后你滿(mǎn)懷信心,春光滿(mǎn)面地按下了【F5】鍵,結(jié)果……