如何避免winform加载数据库连接时出现界面假死的问题 程序运行时会连接数据库,但由于数据库性能不高,导致winform程序加载时出现几秒钟的假死状态,如何避免这种情况呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Thread serverSend = new Thread(new ThreadStart(LoadData));LoadData就是你加载数据的函数。 多线程可以解决你的问题引用命名空间:using System.Threading;Thread td = new Thread(new ThreadStart(ConnDB));td.Start();其中ConnDB就是你连接数据库的那个方法。 用Form.Invoke调用委托,也可以避免这个问题 假设在一个主窗体里,数据库连接完成后button1才能操作,如果连接失败就提示。 private void Form1_Load(object sender, EventArgs e) { this.button1.Enabled = false; Thread thread= new Thread(Conn); thread.Start(); } private void Conn() { // TODO:连接数据库等等时间长的操作 // 如果失败this.Invoke(new CallBack(DoCallBack), new object[] {false}); this.Invoke(new CallBack(DoCallBack), new object[] {true}); } public void DoCallBack(bool isSuccess) { if(isSuccess) { this.button1.Enabled = true; } else { MessageBox.Show("数据库连接失败"); } } public delegate void CallBack(bool isSuccess); 建议LZ把你连接数据库的代码例如: SqlConnection conn = new SqlConnection("server=;database=;uid=;pwd="); conn.Open();这种的代码,前后加上try语句,捕获一下异常,如果没有正常连接上的话,就会报错,这样可以有效避免出现假死的现象,捕获异常语句如下: try { SqlConnection conn = new SqlConnection("server=;database=;uid=;pwd="); conn.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } WinForm中异步刷新窗体 http://blog.csdn.net/sandy945/article/details/6948702 有没有好点的 C# 网络通讯库 C#给指定的EXCEL工作薄添加右键菜单 怎么获取域用户的登录名 谁做过HR方面的接口,指点下。 我在一个框架网页中调用了模态对话框后,但在模态对话框中不能执行服务器端的代码 如何用javascript动态添加行 新手学习C#的Hashtable类时遇到一个问题 c#初学的问题 datetimepicker控件的用法? 小学数学辅助教学软件 System.Threading.Tasks(求助) 如何给datagridview某列设一个默认值
LoadData就是你加载数据的函数。
引用命名空间:using System.Threading;Thread td = new Thread(new ThreadStart(ConnDB));
td.Start();其中ConnDB就是你连接数据库的那个方法。
{
this.button1.Enabled = false;
Thread thread= new Thread(Conn);
thread.Start();
}
private void Conn()
{
// TODO:连接数据库等等时间长的操作
// 如果失败this.Invoke(new CallBack(DoCallBack), new object[] {false});
this.Invoke(new CallBack(DoCallBack), new object[] {true});
} public void DoCallBack(bool isSuccess)
{
if(isSuccess)
{
this.button1.Enabled = true;
}
else
{
MessageBox.Show("数据库连接失败");
}
}
public delegate void CallBack(bool isSuccess);
SqlConnection conn = new SqlConnection("server=;database=;uid=;pwd=");
conn.Open();
这种的代码,前后加上try语句,捕获一下异常,如果没有正常连接上的话,就会报错,这样可以有效避免出现假死的现象,捕获异常语句如下:
try
{
SqlConnection conn = new SqlConnection("server=;database=;uid=;pwd=");
conn.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}