【问题标题】:showing a progressbar while connection to database连接数据库时显示进度条
【发布时间】:2011-03-08 17:49:32
【问题描述】:

我创建了使用远程在线 MYSQL 数据库的 Windows 应用程序。对于连接,我创建了一个 DataConnector() 类。每次我想连接时,我都会创建一个 DataConnector() 类的对象。

其实我想在连接数据库时显示进度条,我的意思是进度条应该在应用程序的顶部,连接成功后进度条应该自动关闭。

需要一些想法如何做到这一点...我尝试过使用“backgroundworker”,但由于类内的函数返回“MySqlConnection”类型而面临问题。

这是我的 DataConnector() 类..

 namespace omg
{
    class DataConnector
    {
        bool connected = false;
        MySqlConnection connection = null;
        MySqlCommand command;
        string connectionstring = "server=127.0.0.1;database=online_trading_system;UserId=root;Password=phanny";
        public MySqlConnection connect()
        {
            try
            {
                connection = new MySqlConnection(connectionstring);
                connection.Open();
                connected = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return connection;
            }

            MessageBox.Show("connected with the databse");
            // connection.Close();
            //connected = false;
            return connection;
        }
        public void close()
        {
            connection.Close();
            connected = false;
            MessageBox.Show("connection Closed");
        }
    }
}

【问题讨论】:

  • WinForms、WebForms、WPF?
  • I've created windows application...
  • 虽然亨氏有一个很好的例子,但我真的质疑这个想法。通常,您保持连接打开的时间仅足以运行您需要的即时查询。实例化连接真的需要超过几毫秒的时间吗?

标签: c# .net mysql winforms


【解决方案1】:

您的 BackgroundWorker 方法是正确的。这是一个简短的示例:

private void OpenConnectionButton_Click() {
    var bw = new BackgroundWorker();

    bw.DoWork += (sender, e) => {
        // this will happen in a separate thread
        var connector = new DataConnector();
        connector.connect(); // this might take a while
        e.Result = connector;
    }

    bw.RunWorkerCompleted += (sender, e) => {
        // We are back in the UI thread here.

        // close the progress bar
        ...

        if (e.Error != null)  // if an exception occurred during DoWork,
            MessageBox.Show(e.Error.ToString());  // do your error handling here
        else {
            var connector = (DataConnector)e.Result;
            // do something with your connector
        }
    };

    // show the progress bar
    ...

    bw.RunWorkerAsync(); // start the background worker
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    相关资源
    最近更新 更多