作者sam319 (Sam)
看板C_Sharp
標題[問題] 請問呼叫COM元件時會卡UI要怎麼解決?
時間Thu Sep 27 15:02:49 2018
我有個按鈕點下後會去呼叫COM元件初始,
按鈕事件寫法如下:
async void btn_Clicked(object sender, EventArgs e)
{
// do something...
await Task.Run(() => comObject.Init());
// do something...
}
已經用多緒打包COM元件的初始,
但仍會把整個UI卡死好幾秒後,
才恢復反應
請問這要怎麼解決?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.195.1
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1538031771.A.F41.html
1F:→ testPtt: COM有去讀寫到UI 09/27 16:19
2F:→ sam319: COM是第三方元件,跟我的UI沒有關係 09/27 18:42
3F:→ testPtt: await似乎會影響到你的btn 09/27 19:32
4F:→ sam319: await Task.Delay(5000)這樣等5秒UI都還是能響應的狀態說 09/28 02:09
5F:→ firose: 它是一個STA COM 最後還是要由建立它的人來執行函數 09/28 03:55
6F:→ sam319: STAThread嗎?請問有強制他跑在其他Thread的方式嗎? 09/28 11:51
7F:推 lightyen: 時代的眼屎 09/30 02:44
8F:→ Litfal: 另外開個sub.exe專門控制COM,主程式跟sub.exe做溝通 10/02 19:47
9F:推 Timba: 寫個 Timer RS232 還是COM 啥的動作都丟進去 10/09 13:23
10F:→ Timba: 沒動作時 Timer.Start() 然後移動視窗 還是跑按鈕先Stop 10/09 13:24
11F:→ Timba: 釋放案牛或執行 完成了再開始 10/09 13:24