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

看板C_Sharp作者 (Sam)時間5年前 (2018/09/27 15:02), 編輯推噓2(209)
留言11則, 6人參與, 5年前最新討論串1/1
我有個按鈕點下後會去呼叫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://www.ptt.cc/bbs/C_Sharp/M.1538031771.A.F41.html

09/27 16:19, 5年前 , 1F
COM有去讀寫到UI
09/27 16:19, 1F

09/27 18:42, 5年前 , 2F
COM是第三方元件,跟我的UI沒有關係
09/27 18:42, 2F

09/27 19:32, 5年前 , 3F
await似乎會影響到你的btn
09/27 19:32, 3F

09/28 02:09, 5年前 , 4F
await Task.Delay(5000)這樣等5秒UI都還是能響應的狀態說
09/28 02:09, 4F

09/28 03:55, 5年前 , 5F
它是一個STA COM 最後還是要由建立它的人來執行函數
09/28 03:55, 5F

09/28 11:51, 5年前 , 6F
STAThread嗎?請問有強制他跑在其他Thread的方式嗎?
09/28 11:51, 6F

09/30 02:44, 5年前 , 7F
時代的眼屎
09/30 02:44, 7F

10/02 19:47, 5年前 , 8F
另外開個sub.exe專門控制COM,主程式跟sub.exe做溝通
10/02 19:47, 8F

10/09 13:23, 5年前 , 9F
寫個 Timer RS232 還是COM 啥的動作都丟進去
10/09 13:23, 9F

10/09 13:24, 5年前 , 10F
沒動作時 Timer.Start() 然後移動視窗 還是跑按鈕先Stop
10/09 13:24, 10F

10/09 13:24, 5年前 , 11F
釋放案牛或執行 完成了再開始
10/09 13:24, 11F
文章代碼(AID): #1Rh82Rz1 (C_Sharp)