我在应用程序读取并从Excel工作表中获取数据时使用进度条时出现问题
这就是我想要做的事情 - :
这就是我所做的 - :
这是调用Run worker的代码片段,单击按钮并选择要读取的文件时,将调用RunWorkerAsync。
// Start the BackgroundWorker.
fileReadingbackgroundWorker.RunWorkerAsync();
报告进度的摘录
int percentProcessFile =1;
for (int i = 1; i <= countSheets; i++)
{
readSheet = (Excel.Worksheet)excelWorkbook.Worksheets.get_Item(i);
for (int row = 2; row <= 100; row++)
{
if (readSheet.Cells[1][row].Text.ToString() != "")
{
for (int column = 1; column <= 15; column++)
{
String Key = readSheet.Cells[1][row].Text.ToString();
String readCaptionCell = readSheet.Cells[column][1].Text.ToString();
String readCurrentCell = readSheet.Cells[column][row].Text.ToString();
if (readSheet.Name == "ISMB")
ISMBSections.Add(Key, readCaptionCell, readCurrentCell);
else if (readSheet.Name == "ISMC")
ISMCSections.Add(Key, readCaptionCell, readCurrentCell);
}
}
else
{
break;
}
precentProgressFile++;
fileReadingbackgroundWorker.ReportProgress(precentProgressFile);
}
}
行fileReadingbackgroundWorker.ReportProgress(precentProgressFile);
抛出异常
我还添加了以下几行
private void fileReadingbackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 1; i <= 100; i++)
{
// Wait 100 milliseconds.
Thread.Sleep(100);
// Report progress.
fileReadingbackgroundWorker.ReportProgress(j);
}
}
private void fileReadingbackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
fileReadingProgressBar.Value = e.ProgressPercentage;
}
第二个代码段中的行fileReadingbackgroundWorker.ReportProgress(precentProgressFile);
会引发异常
我无法理解这里出了什么问题。 我使用的是Visual Studio 12.0和.Net 4.0 如果您有任何问题,请询问
与Accessing UI Control from BackgroundWorker Thread - C#不重复 原因是我没有在任何地方使用DispatcherInvoke。
答案 0 :(得分:0)
BackgroundWorker有一个名为WorkerReportsProgress
的属性,需要将其设置为true才能报告进度。