C#连接数据库无响应。 让程序连接错误的服务器,在连接数据库的过程中,整个程序好像死了一样,等到timeout以后再抛出异常。我想要知道怎么能让程序在连接数据库的过程中也能正常响应其他操作。刚看到有帖子说用异步连接可以解决、请高手指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以使用异步委托或多线程。示例。。 private void button1_Click(object sender, EventArgs e) { Thread th1 = new Thread(new ThreadStart(this.geting)); th1.Start(); Thread.Sleep(0); } private void geting() { using sqlconnection...等其它操作 } 再说清楚一点。程序开始 → 初始化连接字符串,连接数据库(SqlConnection.open())→进行其他操作问题就是:当连接数据库的时候,也就是执行中间那一步的时候,程序就会阻塞在那里,一直到连接数据库成功或者抛出异常。怎么才能让程序在执行第二步的时候不用阻塞在那里。 已经很详细了啊。。这里是SQL版,再贴C#代码,老大会有意见的。。如:你原先的代码: private void button1_Click(object sender, EventArgs e) { using (SqlConnection conn = new SqlConnection("server=(local);uid=sa;pwd=******;database=temp")) { conn.Open(); conn.Close(); } }点击后会假死,如果使用线程,代码如下 private void button1_Click(object sender, EventArgs e) { Thread th1 = new Thread(new ThreadStart(this.geting)); th1.Start(); Thread.Sleep(0); } private void geting() { using (SqlConnection conn = new SqlConnection("server=(local);uid=sa;pwd=ThinkPad;database=temp")) { conn.Open(); conn.Close(); messageBox.show("啊哦,我执行完了!!"); } }这样,你的程序就不会假死了。执行完后,可以回调,但回调函数必须委托。。比如: delegate void SetvalueCallback(int value); private void settext(int value) { if (this.richTextBox1.InvokeRequired) { SetvalueCallback d = new SetvalueCallback(settext); this.Invoke(d, new object[] { value }); } else { this.richTextBox1.Text += value.ToString() + "-"; } } (急)请教高手! Sql server2005收缩问题 将日期转换成字符串,很简单的问题! 请教一条SQL语句 求:字符串查单一字符方法. 关于表中字段类型为Text的数据! 关于主键id 能否在sql中取得汉字的拼音编码? 日期的模糊查询 这个存储过程运行结果为什么不正确????? Proc++ 的问题:线程间的Connect问题 合并数据 用两个AdoQuery打开同一个数据库,一个查询,一个输入,怎么同步啊
示例。。
private void button1_Click(object sender, EventArgs e)
{
Thread th1 = new Thread(new ThreadStart(this.geting));
th1.Start();
Thread.Sleep(0);
}
private void geting()
{
using sqlconnection...等其它操作
}
程序开始 → 初始化连接字符串,连接数据库(SqlConnection.open())→进行其他操作
问题就是:当连接数据库的时候,也就是执行中间那一步的时候,程序就会阻塞在那里,一直到连接数据库成功或者抛出异常。
怎么才能让程序在执行第二步的时候不用阻塞在那里。
{
using (SqlConnection conn = new SqlConnection("server=(local);uid=sa;pwd=******;database=temp"))
{
conn.Open(); conn.Close();
}
}
点击后会假死,如果使用线程,代码如下
private void button1_Click(object sender, EventArgs e)
{
Thread th1 = new Thread(new ThreadStart(this.geting));
th1.Start();
Thread.Sleep(0);
}
private void geting()
{
using (SqlConnection conn = new SqlConnection("server=(local);uid=sa;pwd=ThinkPad;database=temp"))
{ conn.Open(); conn.Close();
messageBox.show("啊哦,我执行完了!!");
}
}这样,你的程序就不会假死了。执行完后,可以回调,但回调函数必须委托。。
比如: delegate void SetvalueCallback(int value);
private void settext(int value)
{
if (this.richTextBox1.InvokeRequired)
{
SetvalueCallback d = new SetvalueCallback(settext);
this.Invoke(d, new object[] { value });
}
else
{
this.richTextBox1.Text += value.ToString() + "-";
}
}