【发布时间】:2016-11-07 15:59:32
【问题描述】:
一直在阅读后台工作程序,主要是 doWork 方法。它表示这应该有计算,但无论如何都不应该依赖于 GUI 代码。这是我的功能:
void fillLiguanea()
{
// this.liguanea_LaneTableAdapter1.Fill(this.pharmaciesDataSet1.Liguanea_Lane);
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.Items.Add(scode);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
在上述函数中有一个名为“comboBox2”的组合框。我的问题是这是否意味着我不能仅仅因为这个组合框控制器而在 doWork 方法中调用我的上述整体函数?
【问题讨论】:
-
填写
List<string>并将其分配给e.Result。然后,您的 RunWorkerCompleted 事件处理程序可以更新组合框。 -
已经有很多关于 Stack Overflow 的问题和答案,解决了如何与来自另一个线程的 UI 对象交互,包括
BackgroundWorker使用的工作线程。有关此类示例,请参见标记的副本。如果您发现自己仍然有困难,请在阅读大量可用信息后发布一个新问题,其中包含一个很好的minimal reproducible example,清楚地显示您尝试过的内容,并详细说明您已经完成的研究和具体而言您仍然无法理解的内容。
标签: c# winforms backgroundworker