我有一个程序使用多个background workers
,它连续地load and read text files (size can up to 1MB)
并更新到oracle数据库。在c#中使用backgroundworker时主线程没有响应
我遇到的问题是无论何时后台工作人员正在读取文件,main thread
将变为not responding
它不应该是。这是读取文件时的默认行为,有什么方法可以解决吗?
谢谢,任何帮助将非常感激。
更新:我的程序代码,简短视图]
private void program_Load(object sender, EventArgs e)
{
bw1.RunWorkerAsync();
bw2.RunWorkerAsync(); //same function as bw1 but different directory
}
private void bw1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
Thread.Sleep(5000);
bw1.ReportProgress(0);
}
}
private void bw1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
directoryInfo = /* directory url */;
files = directoryInfo .GetFiles();
foreach (FileInfo file in files)
{
/*
read file line by line
load data into database
update file loading status to UI
*/
}
}
你的主线是什么?你的意思是在屏幕上显示的UI线程? – 2013-04-26 02:33:40
向我们展示一个完整但简洁的示例代码,演示此问题。 – 2013-04-26 02:36:55
@ToanVo是的,主线程是指我的用户界面 – noobie 2013-04-26 02:38:44