[問題] 請問呼叫COM元件時會卡UI要怎麼解決?

作者: sam319 (Sam)   2018-09-27 15:02:49
我有個按鈕點下後會去呼叫COM元件初始,
按鈕事件寫法如下:
async void btn_Clicked(object sender, EventArgs e)
{
// do something...
await Task.Run(() => comObject.Init());
// do something...
}
已經用多緒打包COM元件的初始,
但仍會把整個UI卡死好幾秒後,
才恢復反應
請問這要怎麼解決?
謝謝
作者: testPtt (測試)   2018-09-27 16:19:00
COM有去讀寫到UI
作者: sam319 (Sam)   2018-09-27 18:42:00
COM是第三方元件,跟我的UI沒有關係
作者: testPtt (測試)   2018-09-27 19:32:00
await似乎會影響到你的btn
作者: sam319 (Sam)   2018-09-28 02:09:00
await Task.Delay(5000)這樣等5秒UI都還是能響應的狀態說
作者: firose (guest也是也是也是也是也)   2018-09-28 03:55:00
它是一個STA COM 最後還是要由建立它的人來執行函數
作者: sam319 (Sam)   2018-09-28 11:51:00
STAThread嗎?請問有強制他跑在其他Thread的方式嗎?
作者: lightyen (lightyen)   2018-09-30 02:44:00
時代的眼屎
作者: Litfal (Litfal)   2018-10-02 19:47:00
另外開個sub.exe專門控制COM,主程式跟sub.exe做溝通
作者: Timba (踢音霸)   2018-10-09 13:23:00
寫個 Timer RS232 還是COM 啥的動作都丟進去沒動作時 Timer.Start() 然後移動視窗 還是跑按鈕先Stop釋放案牛或執行 完成了再開始

Links booklink

Contact Us: admin [ a t ] ucptt.com