我正在研究通過第三方COM庫與外部設備通信的應用程序。我試圖讓設備的所有通信都通過後臺線程來防止通信中出現的問題,從而破壞我的應用程序,並擺脫通過在UI線程中進行通信而引入的其他一些複雜性。UI線程阻塞調用COM對象的後臺線程
問題是,無論何時發生導致主UI線程阻塞的事件(即MessageBox.Show被調用,甚至只是在窗口周圍移動窗口),後臺線程上的設備通信也會停止。
有沒有什麼辦法(短缺完全獨立的進程)將兩條線程分開得足夠遠以至於它們不會互相干擾? (請注意,與一些數學計算完全相同的代碼,可以稍微減慢一些效果,這只是在我使用COM庫時纔有問題)
這似乎很奇怪。沒有看到你的代碼,很難確切地知道爲什麼使UI線程忙碌減慢你的其他線程。工作線程上是否有可能正在等待UI線程執行某些操作的任何東西? – 2010-04-26 20:05:15
你的後臺線程是否告訴UI使用'Invoke'彈出一個消息框? – Paolo 2010-04-26 20:08:52
@Paolo,聽起來這比彈出一個消息框或類似的東西要頻繁得多。據推測,他並沒有彈出如此多的消息框來抓住窗口,並且移動它導致放緩。 :) – 2010-04-26 20:12:51