PDA

View Full Version : جلوگیری ازهنگ برنامه با لطفا منتظر بمانید



windowsyar
پنج شنبه 09 دی 1395, 07:22 صبح
سلام
به این کد دقت کنید

try
{
Label11.Visible = True
SQLiteConnection con = new SQLiteConnection("Data Source=yaMAHDY.sqlite;version=3;");


SQLiteDataAdapter da = new SQLiteDataAdapter("Select id, book, bab from ahadith WHERE book ='" + ListBox1.SelectedItem + "'", con);
DataTable dt = new DataTable();
da.Fill(dt);
DataGridView1.DataSource = dt;



con.Close();



DataGridView1.Columns[0].Width = 50;
DataGridView1.CurrentCell = DataGridView1.Rows[0].Cells[0];


Label11.Visible = False
}
catch
{
MessageBox.Show("متاسفانه نرم افزار به پایگاه داده متصل نشد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Information);
}


من با این کد اطلاعات را در دیتا گرید ویو قرار میدهم
در اول و آخر این کد گفته ام که لیبل ای که نوشته است لطفا منتظر بمانید آشکار و پنهان شود
ولی در کل لطفا منتظر بمانید پنهان است
چگونه در زمان پردازش کامپیوتر نوشته شود لطفا منتظر بمانید
یا مثلا اگر امکان دارد یک ProgressBar پر شود

reza_ali202000
پنج شنبه 09 دی 1395, 15:31 عصر
سلام دوست عزیز. از بک گروند ورکر باید استفاده کنید.

windowsyar
پنج شنبه 09 دی 1395, 20:14 عصر
خیلی ممنون از راهنمایی تون درباره گروند ورکر تحقیق کردم
این خطا را می دهد

Cross-thread operation not valid: Control 'Rich_matn1' accessed from a thread other than the thread it was created on
این هم کد های من.

constructor for other classes:
BackgroundWorker1.DoWork += BackgroundWorker1_DoWork;
Button32.Click += Button32_Click;
private void BackgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
Rich_matn1.Clear();
SQLiteConnection con = new SQLiteConnection("Data Source=yaMAHDY.sqlite;version=3;");
SQLiteDataAdapter da = new SQLiteDataAdapter("Select matn1 from ahadith WHERE book ='" + ListBox1.SelectedItem + "'", con);
DataSet dt = new DataSet();
da.Fill(dt);
for (int n = 0; n < dt.Tables[0].Rows.Count; n++)
{
Rich_matn1.AppendText(Environment.NewLine + Convert.ToString(dt.Tables[0].Rows[n]["matn1"]));
}
con.Close();
}
private void Button32_Click(object sender, EventArgs e)
{
ProgressBar1.Maximum = 100000;
BackgroundWorker1.RunWorkerAsync();
}