shahin60
جمعه 28 شهریور 1393, 16:13 عصر
سلام من از یه backgroudworker تو برنامم استفاده کردم
حالا نمی دونم مشکلش چیه که خیلی طول میکشه تموم بشه، باید براش زمان تعریف کنم یا درسته؟
ممنون میشم راهنمایی کنید:
public Bkw()
{
InitializeComponent();
m_oWorker = new BackgroundWorker();
m_oWorker.DoWork += new DoWorkEventHandler(m_oWorker_DoWork);
m_oWorker.ProgressChanged += new ProgressChangedEventHandler(m_oWorker_ProgressChan ged);
m_oWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(m_oWorker_RunWorker Completed);
m_oWorker.WorkerReportsProgress = true;
m_oWorker.WorkerSupportsCancellation = true;
}
void m_oWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//If it was cancelled midway
if (e.Cancelled)
{
lblStatus.Text = "محاسبه لغو شد";
}
else if (e.Error != null)
{
lblStatus.Text = "Error while performing background operation.";
}
else
{
Class_Msg.Msg_Save();
lblStatus.Text = "تکمیل محاسبات";
}
btn_save .Enabled = true;
btn_cancel.Enabled = false;
}
void m_oWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//Here you play with the main UI thread
progressBar1.Value = e.ProgressPercentage;
lblStatus.Text = "لطفا چند دقیقه صبر کنید..." + progressBar1.Value.ToString() + "%";
}
//************************************************** ********************
void m_oWorker_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < 100; i++)
{
m_oWorker.ReportProgress(i);
mohasebe();
if (m_oWorker.CancellationPending)
{
e.Cancel = true;
m_oWorker.ReportProgress(0);
return;
}
}
m_oWorker.ReportProgress(100);
}
private void btn_save_Click(object sender, EventArgs e)
{
btn_save .Enabled = false;
btn_cancel.Enabled = true;
m_oWorker.RunWorkerAsync();
}
متد محاسبه mohasebe() متدی هست که اطلاعات 10000 نفر پردازش میکنه
حالا نمی دونم مشکلش چیه که خیلی طول میکشه تموم بشه، باید براش زمان تعریف کنم یا درسته؟
ممنون میشم راهنمایی کنید:
public Bkw()
{
InitializeComponent();
m_oWorker = new BackgroundWorker();
m_oWorker.DoWork += new DoWorkEventHandler(m_oWorker_DoWork);
m_oWorker.ProgressChanged += new ProgressChangedEventHandler(m_oWorker_ProgressChan ged);
m_oWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(m_oWorker_RunWorker Completed);
m_oWorker.WorkerReportsProgress = true;
m_oWorker.WorkerSupportsCancellation = true;
}
void m_oWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//If it was cancelled midway
if (e.Cancelled)
{
lblStatus.Text = "محاسبه لغو شد";
}
else if (e.Error != null)
{
lblStatus.Text = "Error while performing background operation.";
}
else
{
Class_Msg.Msg_Save();
lblStatus.Text = "تکمیل محاسبات";
}
btn_save .Enabled = true;
btn_cancel.Enabled = false;
}
void m_oWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//Here you play with the main UI thread
progressBar1.Value = e.ProgressPercentage;
lblStatus.Text = "لطفا چند دقیقه صبر کنید..." + progressBar1.Value.ToString() + "%";
}
//************************************************** ********************
void m_oWorker_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < 100; i++)
{
m_oWorker.ReportProgress(i);
mohasebe();
if (m_oWorker.CancellationPending)
{
e.Cancel = true;
m_oWorker.ReportProgress(0);
return;
}
}
m_oWorker.ReportProgress(100);
}
private void btn_save_Click(object sender, EventArgs e)
{
btn_save .Enabled = false;
btn_cancel.Enabled = true;
m_oWorker.RunWorkerAsync();
}
متد محاسبه mohasebe() متدی هست که اطلاعات 10000 نفر پردازش میکنه