我正在尝试使用BackgroundWorker
将数据集的进度转换为Excel,从而获得ProgressBar
。问题在于工作是在与ProgressBar
不同的课程中完成的,并且我很难在我的循环中调用worker.ReportProgress(...)
。我很抱歉,如果这是一件容易的事情,但我是C#的新手,并且一直在尝试这一整天,并且看起来似乎无法做到。高度赞赏您的帮助。具有进度条的背景工作人员
namespace CLT
{
public partial class GenBulkReceipts : UserControl
{
private void btnOpen_Click(object sender, EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
try
{
OpenFile();
}
Cursor.Current = Cursors.Default;
}
private void OpenFile()
{
if (dsEx1.Tables[0].Rows.Count > 0)
{
backgroundWorker1.RunWorkerAsync(dsEx1);
}
}
public void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
DataSet ImportDataSet = e.Argument as DataSet;
AccountsToBeImported = new BLLService().Get_AccountsToBeReceipted(ImportDataSet);
}
public void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
}
// ...
}
}
namespace BLL
{
class GenBulkReceiptsBLL
{
public DataSet Get_AccountsToBeReceipted(DataSet dsImport)
{
DataSet dsReturn = AccountsDAL.QGenReceiptAccounts(0,0,"");//Kry Skoon DataSet wat ge-populate moet word
CLT.GenBulkReceipts pb = new CLT.GenBulkReceipts();
int TotalRows = dsImport.Tables[0].Rows.Count;
//pb.LoadProgressBar(TotalRows);
int calc = 1;
int ProgressPercentage;
foreach (DataRow dr in dsImport.Tables[0].Rows)
{
ProgressPercentage = (calc/TotalRows) * 100;
//This is the problem as I need to let my Progressbar progress here but I am not sure how
//pb.worker.ReportProgress(ProgressPercentage);
}
return dsReturn;
}
// ...
}
}
位于'btnOpen_Click(...)'方法中'try-catch'的catch子句在哪里? – 2012-01-27 13:34:15
请确保您接受答案,如果它导致您的问题的解决;并投票你觉得有用的任何东西。 – 2012-01-27 20:06:35
它在那里,我只是没有包括它在这里,使代码示例分类器 – user1171437 2012-01-30 07:20:38