后台线程似乎是锁定UI

时间:2015-02-06 07:37:46

标签: .net multithreading file-io

我有一个Windows窗体应用程序,它产生24个线程,每个线程从远程服务器上的文本文件中读取数据,并使用内容填充数据库。每个线程以设定的间隔循环,直到更改标志以停止数据收集。

我的问题是,似乎FileIO.TextFieldParser调用稍微锁定了UI。有时长达一秒或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 个答案:

答案 0 :(得分:1)

这可能取决于您运行后台线程的方式。例如,BackgroundWorker将事件发送到UI线程(see here for an overview)。您可以尝试重新编码线程方法以使用不同的线程方法。

您还可以尝试更改线程数,以查看它是否对您的ui锁定有任何影响。