我用SQLDMO做SQL数据库备份,现在已经备份成功了,但是进度条不能实时显示备份进度,下面是我设计的进度条代码,不知有何问题,请指点一下
private void button2_Click(object sender, EventArgs e)
{    //前面代码省略
    SQLDMO.BackupSink_PercentCompleteEventHandler pceh = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step);
    sqldmo_backup.PercentComplete += pceh;
    //后面代码省略}private void Step(string message, int percent)
{
    progressBar1.Value = percent;
}

解决方案 »

  1.   

    在 Step 中加入 Application.DoEvents()试试。private void Step(string message, int percent) 

        progressBar1.Value = percent; 
        application.DoEvents();
    }
      

  2.   

        SQLDMO.BackupSink_PercentCompleteEventHandler pceh = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step); 
        sqldmo_backup.PercentComplete += pceh; 
    这2句位置该加在什么地方?我是放在sqldmo_backup.SQLBackup(oSQLServer)这句之前的
      

  3.   

    下面是完整的代码
    private void button2_Click(object sender, EventArgs e)
    {
                SQLDMO.Backup sqldmo_backup = new SQLDMO.BackupClass();
                SQLDMO.SQLServer sqldmo_sqlserver = new SQLDMO.SQLServerClass();
                try
                {
                    sqldmo_sqlserver.LoginSecure = false;
                    class_custom_sql custom_sql = new class_custom_sql();
                    string p_str_serverip = custom_sql.sql_connect().DataSource;//获取数据库实例名称,如IP或计算机名
                    string p_str_userid = custom_xml.getxmlnodetext("//config/backupdata/userid");
                    string p_str_userpwd = custom_xml.getxmlnodetext("//config/backupdata/userpwd");
                    sqldmo_sqlserver.Connect(p_str_serverip, p_str_userid, p_str_userpwd);
                    sqldmo_backup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
                    sqldmo_backup.Initialize = true;
                    SQLDMO.BackupSink_PercentCompleteEventHandler pceh = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step);
                    sqldmo_backup.PercentComplete += pceh;
                    sqldmo_backup.Files = "["[email protected]() + @"\" + textBox2.Text.Trim()+"]";
                    sqldmo_backup.Database = custom_sql.sql_connect().Database;//获取数据库名称
                    sqldmo_backup.SQLBackup(sqldmo_sqlserver);
                    progressBar1.Value = 100;
                    custom_xml.savexmlnodetext("//config/restoredata/DataSource", p_str_serverip);
                    custom_xml.savexmlnodetext("//config/restoredata/DataBase", custom_sql.sql_connect().Database);
                    MessageBox.Show("数据库备份成功!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "数据备份失败",MessageBoxButtons.OK,MessageBoxIcon.Error);
                }
                finally
                {
                    sqldmo_sqlserver.DisConnect();
                }
    }private void Step(string message, int percent) 

        progressBar1.Value = percent; 
        application.DoEvents();
    }
    备份功能已经成功了,就是不显示进度,不知哪里有问题?