Cześć wszystkim,
Pisałem niedawno w podobnej sprawie, ale dalej nie mogę sobie poradzić. Tym razem łączę się z bazą danych MS SQL i wyciągam z niej dane do DataGridView. Chcę poinformować użytkownika, że proces trwa więc jak zawsze ideałem wydaje się pasek postępu. Wystarczy żeby działał w trybie Marquee więc zaczynał się animować po naciśnięciu przycisku.
Kombinowałem z await, Run.Task itd., ale za każdym razem co wydaje się logiczne dla mnie pojawiał się błąd typu połączenie nie może być wykonywane w innym wątku.
Czy do obecnego kodu w łatwy sposób można dołożyć progress bar ? bo mam wrażenie że trzeba przebudować cały kod.
public void Button1Click(object sender, EventArgs e)
{
button1.BackColor = System.Drawing.Color.Yellow;
string danepolaczenia;
SqlConnection polaczeniezbaza;
danepolaczenia = @"dane";
polaczeniezbaza = new SqlConnection(danepolaczenia);
polaczeniezbaza.Open();
MessageBox.Show ("Otworzyłem połączenie, kliknij OK i poczekaj na wyświetlenie danych !");
SqlCommand komenda;
String sql;
sql = @"dane";
komenda = new SqlCommand(sql, polaczeniezbaza);
SqlDataAdapter da = new SqlDataAdapter(komenda);
DataTable dt = new DataTable ();
da.Fill(dt); // wypełnienie dt czyli naszej tabeli
dataGridView1.DataSource = dt;
dataGridView1.Columns[1].Width = 150;
dataGridView1.Columns[2].Width = 130;
dataGridView1.Columns[3].Width = 140;
dataGridView1.Columns[4].Width = 120;
Thread.Sleep(2000);
komenda.Dispose();
polaczeniezbaza.Close();