Я пытаюсь получить ProgressBar
с ходом преобразования данных в Excel с помощью BackgroundWorker
. Проблема в том, что работа выполняется в другом классе, чем в 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;
}
// ...
}
}
Где 'catch' предложение вашего' try-catch' находится в методе 'btnOpen_Click (...)'? –
Пожалуйста, убедитесь, что вы принимаете ответ, если это приведет к разрешению проблемы; и голосуйте за то, что вы сочли полезным. –
Здесь я просто не включил его здесь, чтобы сделать сортировщик образцов кода – user1171437