现在我要实现一个功能 自动备份数据库的bak文件 当我设置好了时间 周期 然后根据这2个条件对数据库的文件进行备份
我已经把这个备份写成一个方法 我想知道如何用线程按照条件来调用这个备份方法?本来timer可以实现 但是公司前辈非要我用线程 我以前做web开发的 现在做winform 对多线程的概念模糊 求解答!
我已经把这个备份写成一个方法 我想知道如何用线程按照条件来调用这个备份方法?本来timer可以实现 但是公司前辈非要我用线程 我以前做web开发的 现在做winform 对多线程的概念模糊 求解答!
//备份数据库数据文件
private void SaveFileDialog()
{
string localFilePath;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.InitialDirectory = Public.ClassPublic.strServerip;
//设置文件类型
saveFileDialog1.Filter = "bak files(*.bak)|*.txt|All files(*.*)|*.*"; //设置默认文件类型显示顺序
saveFileDialog1.FilterIndex = 2; ////保存对话框是否记忆上次打开的目录
//saveFileDialog1.RestoreDirectory = true; //点了保存按钮进入
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
//获得文件路径
localFilePath = saveFileDialog1.FileName.ToString();
this.txtBackupPath.Text = localFilePath;
}
//数据库连接
ClassSqlserver db = new ClassSqlserver(ClassPublic.strConn);
//打开数据库 db.Open();
try
{ string sql = string.Format("BACKUP DATABASE ryjk TO DISK ='{0}' with init", this.txtBackupPath.Text);
DataSet dt = db.ExecuteDataSet(sql);
if (dt == null)
{
MessageBox.Show("退出操作", "提示", MessageBoxButtons.OK);
return;
}
else
{
MessageBox.Show("数据库备份成功!", "提示", MessageBoxButtons.OK);
}
}
catch (Exception ex)
{ throw ex;
}
finally
{
//关闭数据库
db.Close();
}这是备份的方法
using System.Threading;public void ParameterRun(object ms)
public void NonParameterRun() //不带参数的启动方法
Thread nonParameterThread = new Thread(new ThreadStart(p.NonParameterRun));
nonParameterThread.Start(); //带参数的启动方法
Thread parameterThread = new Thread(new ParameterizedThreadStart(p.ParameterRun));
parameterThread.Start(30);
能用Timer我就不会来发帖了- - 项目组长不让用 汗
timer不是多线程。没有分配内存空间,还是在ui线程上。不过说实话,楼主的需求用timer足够了。你们前辈可能是要你学习一下多线程,结果你小子跑这里要代码来了。给你前辈知道,肯定骂死你。
t.IsBackground = true;
t.Start();
最好是能把保存文件的路径设置好,不用选择路径。那样多线程效果更好。