دوستان سلام
من وقتی میخوام دیتابیس رو با استفاده از بک گراند وورکر ریستور کنم ، متد ریستور اصلا اجرا نمیشه
کد :
clsBackUp_Restore Mybk = new clsBackUp_Restore();
BackgroundWorker BGW_1;
//BackgroundWorker BGW_2;
bool RunningState = false;
public frmRestoreDataBase()
{
InitializeComponent();
BGW_1 = new BackgroundWorker();
//BGW_2 = new BackgroundWorker();
BGW_1.DoWork += new DoWorkEventHandler(_DoWork);
BGW_1.ProgressChanged += new ProgressChangedEventHandler(_ProgressChanged);
BGW_1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_RunWorkerCompleted );
BGW_1.WorkerReportsProgress = true;
//BGW_2.DoWork += new DoWorkEventHandler(_DoWork2);
}
private void btnRestore_Click(object sender, EventArgs e)
{
try
{
//اجرای عملیات در پس زمینه
BGW_1.RunWorkerAsync();
}
catch (Exception Exception)
{
Cursor.Current = Cursors.Default;
MessageBox.Show(Exception.Message, "عملیات بازگردانی فایل پشتیبان با خطا مواجه شد!");
}
}
void _DoWork(object sender, DoWorkEventArgs e)
{
RunningState = true;
BGW_1.ReportProgress(0);
Cursor.Current = Cursors.WaitCursor;
Mybk.Restor_MyDataBase(txtBackUpPath.Text.Trim());
RunningState = false;
}
void _ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//محاسبه درصد پیشرفت عملیات
int Percent = 0;
while (RunningState)
{
Thread.Sleep(100);
Percent = Mybk.Calc_Backup_Restor_ProgressPercent();
if (Percent > 0)
progressBar1.Value = Percent;
}
}
void _RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Cursor.Current = Cursors.Default;
progressBar1.Value = 100;
frmMessagBox Mymessage = new frmMessagBox();
Mymessage.Text = "بازیابی فایل پشتیبان";
Mymessage.Peygham = "عملیات بازیابی فایل پشتیبان با موفقیت انجام شد!";
Mymessage.ShowDialog();
this.Close();
}
اما همین متد خارج از dowork بدون هیچ مشکلی اجرا میشه
البته مشکل بر میگرده به این دستور که میزان پیشرفت عملیات رو توی پروگرس بار نمایش میده.
وقتی این خط هست اصلا خط Mybk.Restor_MyDataBase(txtBackUpPath.Text.Trim()); اجرا نمیشه و سی پی یو به شدت مشغول میشه
توضیح این که با همین روش عملیات بک آپ رو انجام دادم و هیچ مشکلی نداره