作者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/cn.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