不貼原始碼了,簡單說一下我的UI界面
左邊一個ComBoBox界面,有個TextChange事件;
右邊一個skinPanel1容器,里面用下列代碼加載第三方程式
private void LoadThirdProess(string ThirdProessFilePath)
{
skinPanel1.Controls.Clear();
Process p = new Process();
p.StartInfo.FileName = ThirdProessFilePath;
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;//加上這句效果更好
p.Start();
System.Threading.Thread.Sleep(1000);//加上,100如果效果沒有就繼續加大
MaiPtr = p.MainWindowHandle;
SetParent(p.MainWindowHandle, skinPanel1.Handle); //panel1.Handle為要顯示外部程式的容器
MoveWindow(p.MainWindowHandle, 0, 0, skinPanel1.Width, skinPanel1.Height, true);
}
現在說問題:
當表單load中加載LoadThirdProess后,運行程序中TextChange的事件很慢,慢到輸入Text的程序中都卡頓;
但如果不運行LoadThirdProess,則一切正常。
嘗試方案:
表單load加載,改成這樣
Task.Run(()=> { LoadAutoMesureWateP(); });//加載第三方程式結果
SetParent(p.MainWindowHandle, skinPanel1.Handle); //panel1.Handle為要顯示外部程式的容器這句測驗通不過。
本人對多執行緒與異步不太懂,請高人指點。
還有我想問一下原因,我沒有仔細琢磨異步或多執行緒的原因是因為:
我感覺這種狀況與異步沒關系呀,因為即使LoadThirdProess這段代碼再耗時耗資源,也只有在整個表單load時再才起作用呀;ComboBox的TextChangeg事件是在整個表單load完成后很久才呼叫的,根本不是一個時間點,應該影響不到才對呀。
我猜測TextChangeg的原因是不是因為系統記憶體(或CPU)不足了呀,也就是第三方程式(ThirdProessFilePath這個路徑的程式)把系統資源占用了,就像早期的低配電腦一樣,但也不應該呀,因為我的第三方程式只有幾十M,不可能占那么多資源的。
不解,等高人。
uj5u.com熱心網友回復:
運行一次三方程式占用時間多長可以知道呀?是不是第三方占用太多時間可以測驗下轉載請註明出處,本文鏈接:https://www.uj5u.com/net/46332.html
標籤:C#
