これは私のバックグラウンドの仕事DoWor関数です。バックグラウンドワーカーの実装
private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
try
{
string connectionString = "Data Source=LPMSW09000012JD\\SQLEXPRESS;Initial Catalog=Pharmacies;Integrated Security=True";
SqlConnection con = new SqlConnection(connectionString);
con.Open();
string query = "SELECT * FROM dbo.Liguanea_Lane2";
SqlCommand cmd = new SqlCommand(query, con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string scode = dr.GetString(dr.GetOrdinal("code"));
comboBox2.Invoke((MethodInvoker)delegate
{
comboBox2.Items.Add(scode);
});
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
そして、これはそれを呼び出す関数です:
private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
{
if(comboBox4.SelectedIndex == 0)
{
backgroundWorker1.RunWorkerAsync();
}
else
{
MessageBox.Show("This table doesn't exist within the database");
}
}
現在何もhappens..theコードだけで、画面上のデフォルトの形式で実行されます。値をロードしていない、何が間違っていますか?
backgroundWorker1.RunWorkerAsync()'を呼び出すことによって、私はあなたが作業してコードを作るとしますDapperのは、このすべてのコードを取り除くために同じよう
はさらに良いことに、マイクロORMを使用しますボタンを使用してしかし、あなたのバックグラウンドワーカーは、DoWorkイベントで重いUIタスクを実行しているので、何とか役に立たない。 –
しかし、私はInvokerメソッドを使って助けてくれると思った。 – Jevon
いいえ、役に立たないでしょう。 'Invoke'を使うと、渡すアクションはUIスレッドで実行されます。 –