程序运行时会连接数据库,但由于数据库性能不高,导致winform程序加载时出现几秒钟的假死状态,如何避免这种情况呢?

解决方案 »

  1.   

    Thread serverSend = new Thread(new ThreadStart(LoadData));
    LoadData就是你加载数据的函数。
      

  2.   

    多线程可以解决你的问题
    引用命名空间:using System.Threading;Thread td = new Thread(new ThreadStart(ConnDB));
    td.Start();其中ConnDB就是你连接数据库的那个方法。
      

  3.   

    用Form.Invoke调用委托,也可以避免这个问题
      

  4.   

    假设在一个主窗体里,数据库连接完成后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);
      

  5.   

    建议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);
           }
      

  6.   

    WinForm中异步刷新窗体 http://blog.csdn.net/sandy945/article/details/6948702