我用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;
}
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;
}
{
progressBar1.Value = percent;
application.DoEvents();
}
sqldmo_backup.PercentComplete += pceh;
这2句位置该加在什么地方?我是放在sqldmo_backup.SQLBackup(oSQLServer)这句之前的
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();
}
备份功能已经成功了,就是不显示进度,不知哪里有问题?