我的代码目前在using括号内:
using (SqlConnection con = new SqlConnection(connectionString))
{
SqlDataReader reader;
con.Open();
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter(cmd);
.....
而且,当搜索发生时,所有的UI控件都是不可点击的。例如,我有一个“中止”按钮,如果搜索时间太长,可以结束搜索,但由于后台搜索正在发生,该按钮不可点击。
我所尝试的:
private void abort_Click(object sender, EventArgs e)
{
SqlConnection connection = new SqlConnection();
connection.Close();
}
但是,当SQL连接在Windows窗体GUI中保持打开状态时,我又一次无法单击任何UI控件。
有什么想法或变通办法吗?
1条答案
按热度按时间tzcvj98z1#
有一个ADO.NET方法的异步实现,如下所示:https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/asynchronous-programming
或者,您可以 checkout
BackgroundWorker
类(因为您使用的是Windows窗体)或Task
类。