Mehmet Fatih

Mehmet Fatih

  • 857
  • 939
  • 41k

Data saving compatibility with Progressbar

Sep 23 2023 9:41 AM

When I click the button, the form is waiting for a while after the progressbar is completed.. For a while, it is giving a message that the data is recorded.. What do you think is the reason for this? My codes are here.

private IProgress<int> progress;
public void DoProcessing(IProgress<int> progress)
{
    for (int i = 0; i <= 100; ++i)
    {
        Thread.Sleep(100); // CPU-bound work
      if (progress != null)
            progress.Report(i);
    }
}
private  async void button3_Click(object sender, EventArgs e)
{
    List<int> ChkedRow = dataGridView1.Rows.Cast<DataGridViewRow>()
                                      .Where(row => Convert.ToBoolean(row.Cells[0].Value) == true)
                                      .Select(row => row.Index)
                                      .ToList();

    if (ChkedRow.Count == 0)
    {
        MessageBox.Show("Geziye katilacak ögrenci seçiminde bulunmadiniz!");
        return;
    }

        label5.Visible = true;
        progressBar1.Value = 0;
        progressBar1.Visible = true;
        Cursor.Current = Cursors.WaitCursor;
    
    var progress = new Progress<int>(percent =>
    {
        progressBar1.Value = percent;
        progressBar1.PerformStep();
        label5.Text = percent.ToString() + "%";
    });

    // DoProcessing is run on the thread pool.
    await Task.Run(() => DoProcessing(progress));

    foreach (int j in ChkedRow)
        {
        try
        {
            var val1 = dataGridView1.Rows[j].Cells["tcno"].Value;
            var val2 = dataGridView1.Rows[j].Cells["ono"].Value;
            var val3 = dataGridView1.Rows[j].Cells["isim"].Value;
            var val4 = dataGridView1.Rows[j].Cells["soyisim"].Value;
            var val5 = dataGridView1.Rows[j].Cells["cinsiyet"].Value;
            var val6 = dataGridView1.Rows[j].Cells["dtarihi"].Value;
            var val7 = dataGridView1.Rows[j].Cells["sinifi"].Value;
            var val8 = dataGridView1.Rows[j].Cells["unvan"].Value;
            var val10 = dataGridView1.Rows[j].Cells["kbaskani"].Value;

            using (var conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source = gezievrak2541.accdb; Jet OLEDB:Database Password = Fatih2541; Mode = ReadWrite"))
            {
                conn.Open();
                using (var cmd = new OleDbCommand("select * from gezilistemiz25 where tcno IN ('" + val1 + "')", conn))
                {
                    using (OleDbDataReader dr = cmd.ExecuteReader())
                    {

                        if (dr.Read())
                        {
                            while (dr.Read())
                            {
                                MessageBox.Show(" '" + val3 + " " + val4 + "' isimli ögrenciler veritabaninda kayitlidir. Mükerrer kayit yapilamaz. Lütfen kontrol ediniz.");
                            }
                        }
                        else
                        {

                            string val9 = null;

                            if (!String.IsNullOrEmpty(dataGridView1.Rows[j].Cells["atel"].Value.ToString()))
                            {
                                val9 = dataGridView1.Rows[j].Cells["atel"].Value.ToString();
                            }
                            else if (!String.IsNullOrEmpty(dataGridView1.Rows[j].Cells["btel"].Value.ToString()))
                            {
                                val9 = dataGridView1.Rows[j].Cells["btel"].Value.ToString();
                            }
                            else
                            {
                                MessageBox.Show("'" + val3 + " " + val4 + "' isimli ögrencinin veli telefonu bulunmamaktadir! Bu nedenle bu ögrenci gezi listesine eklenemedi.");
                                continue;
                            }

                            var cmdText = "INSERT INTO gezilistemiz25 (tcno, ono, adi, soyadi, cinsiyet, dtarihi, sinifi, unvani, vtel, kbaskani) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
                            var command = new OleDbCommand(cmdText, conn);
                            command.Parameters.AddWithValue("tcno", val1);
                            command.Parameters.AddWithValue("ono", val2);
                            command.Parameters.AddWithValue("adi", val3);
                            command.Parameters.AddWithValue("soyadi", val4);
                            command.Parameters.AddWithValue("cinsiyet", val5);
                            command.Parameters.AddWithValue("dtarihi", val6);
                            command.Parameters.AddWithValue("sinifi", val7);
                            command.Parameters.AddWithValue("unvani", val8);
                            command.Parameters.AddWithValue("vtel", val9);
                            command.Parameters.AddWithValue("kbaskani", val10);
                            command.ExecuteNonQuery();
                            conn.Close();
                            command.Dispose();
                            
                        }
                    }
                }
            }
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        }
    progressBar1.Visible = false;
    label5.Visible = false;
    headerCheckBox2.Checked = false;
    comboBox1.SelectedIndex = 0;
    GC.WaitForPendingFinalizers();
    GC.Collect();
    MessageBox.Show("Seçtiginiz ögrenciler gezi listesine eklendi.");
    Listele();
    Cursor.Current = Cursors.Arrow;
}

 


Answers (2)