我对线程比较陌生,所以我不确定我是否正确地处理这个问题。
在我当前的应用程序中,我有一个多选项卡式导航表单,其中一些具有通向其他表单的按钮,其中一些具有表格,而其中一些具有两者。在一个这样的地方,我有一个按钮来添加一个条目,还有一个表格,显示当天通过存储过程提取的所有条目。
当我以对话框的形式打开第二个表单时,很容易通过调用我创建的方法来刷新表格......但是,它运行得很慢。相反,我开始将它作为另一个线程调用,它运行得非常快,但我似乎找不到在线程结束时调用该方法的方法。我已经搜索了一段时间,但没有找到可行的解决方案。
这是代码:
public static void ThreadProcAddEntry()
{
Application.Run(new AddEntry());
}
private void btnAdd_Click(object sender, EventArgs e)
{
System.Threading.Thread t = new Thread(new ThreadStart(ThreadProcAddEntry));
t.Name = "AddEntry";
t.Start();
}
和
public void GetMyEntries(string username)
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DB2"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("SP_GetUserEntries", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@UserID", SqlDbType.VarChar).Value = username;
conn.Open();
cmd.ExecuteNonQuery();
SqlDataReader reader = cmd.ExecuteReader();
using (reader)
{
DataTable table = new DataTable();
table.Load(reader);
dgvMyEntry.DataSource = table;
dgvMyEntry.AllowUserToAddRows = false;
dgvMyEntry.ReadOnly = true;
dgvMyEntry.AutoResizeColumns();
dgvMyEntry.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
}
}
}
您如何建议我在线程结束时运行 GetMyEntries 方法,这会在我单击 AddEntryForm 上的 Submit 按钮时发生(在提交到 SQL 之后,运行 dispose 方法)?