2015-02-06 111 views
0

我有一個Windows窗體應用程序,它產生24個線程,每個線程從遠程服務器上的文本文件中讀取數據,並用內容填充數據庫。每個線程以設定的間隔循環,直到更改標誌來停止數據收集。後臺線程似乎鎖定UI

我的問題是,看起來FileIO.TextFieldParser調用稍微鎖定了用戶界面。有時達到一秒或2.這對我來說似乎很奇怪,但如果我刪除了那部分代碼,則不會有UI干擾。添加它,它返回......

編輯:我已經與File.ReadAllLines嘗試過了,它仍然發生

任何想法什麼怎麼回事?另外,是否有任何方法來配置UI線程,以確認這是/不是問題。

Dim thPoll = New Thread(Sub() mc.CollectData()) 
thPoll.Name = "ip_" & mc.IP 
thPoll.IsBackground = True 
thPoll.Priority = ThreadPriority.BelowNormal 
thPoll.Start() 

回答

1

這可能取決於你如何運行你的後臺線程:

線程產卵按如下規則進行。 BackgroundWorker例如發送事件到UI線程(see here for an overview)。您可以嘗試重新編碼您的線程方法以使用不同的線程方法。

您也可以嘗試改變線程數,看它是否對你的用戶界面鎖定產生任何影響。

+0

我實際上沒有使用'BackgroundWorker'。如果你不介意看看,我已經將代碼添加到了我的問題中了! – doovers 2015-02-06 08:03:14

+0

嗯..沒有想法。這是瘋狂的猜測,但你可以看看任務管理器和資源消耗(如CPU負載),並檢查你的24個進程是否消耗瞭如此多的資源,以至於整個系統可能會掛起?我能想象的是,這24個線程在相同的情況下采取行動。如果是這種情況,您可以嘗試使用Semaphore來限制併發更新的數量。 – Sascha 2015-02-06 09:35:14

+0

感謝您的建議,我會放棄! – doovers 2015-02-10 03:37:05