看板 C_Sharp 關於我們 聯絡資訊
我有個按鈕點下後會去呼叫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
testPtt: COM有去讀寫到UI 09/27 16:19
sam319: COM是第三方元件,跟我的UI沒有關係 09/27 18:42
testPtt: await似乎會影響到你的btn 09/27 19:32
sam319: await Task.Delay(5000)這樣等5秒UI都還是能響應的狀態說 09/28 02:09
firose: 它是一個STA COM 最後還是要由建立它的人來執行函數 09/28 03:55
sam319: STAThread嗎?請問有強制他跑在其他Thread的方式嗎? 09/28 11:51
lightyen: 時代的眼屎 09/30 02:44
Litfal: 另外開個sub.exe專門控制COM,主程式跟sub.exe做溝通 10/02 19:47
Timba: 寫個 Timer RS232 還是COM 啥的動作都丟進去 10/09 13:23
Timba: 沒動作時 Timer.Start() 然後移動視窗 還是跑按鈕先Stop 10/09 13:24
Timba: 釋放案牛或執行 完成了再開始 10/09 13:24