c# WinForm 定时执行某个后台操作 如把B文件夹下的文件Copy到A文件夹下
2008-10-13 09:56
232 查看
//目的是后台定时运行文件同步操作 使A文件夹中的文件与B文件夹中的同步
//先将A文件夹中存在而B文件夹中没有的A文件夹中的文件删除
//再直接将B文件夹下的文件全部复制到A文件夹下
//或者将B文件夹中存在A文件夹中没有或比A文件夹中的更新的B文件夹中的文件复制到A文件夹下
Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace ImageManager
{
public partial class BackgroundWorkerForm : Form
{
public BackgroundWorkerForm()
{
InitializeComponent();
//
timer1.Interval = 10000;
timer1.Enabled = true;
CheckForIllegalCrossThreadCalls = false;
}
private void button1_Click(object sender, EventArgs e)
{
int iFileCount = 0;
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"F:\Temp\A");
iFileCount = di.GetFiles().Length;
MessageBox.Show("A文件夹下 文件的个数" + iFileCount.ToString());
}
bool IsComplete = true;
//目的是后台定时运行文件同步操作 使A文件夹中的文件与B文件夹中的同步
//先将A文件夹中存在而B文件夹中没有的A文件夹中的文件删除
//再直接将B文件夹下的文件全部复制到A文件夹下
//或者将B文件夹中存在A文件夹中没有或比A文件夹中的更新的B文件夹中的文件复制到A文件夹下
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
IsComplete = false;//本次操作未完成
System.IO.DirectoryInfo diA = new System.IO.DirectoryInfo(@"F:\Temp\A");
System.IO.FileInfo[] fiA = diA.GetFiles();
//先将A文件夹中存在而B文件夹中没有的A文件夹中的文件删除
foreach (FileInfo tmpfiA in fiA)
{
if (!File.Exists(@"F:\Temp\B\" + tmpfiA.Name))
{
tmpfiA.Delete();
this.label2.Text += "\n A Delete "+tmpfiA.Name;
}
}
//再直接将B文件夹下的文件全部复制到A文件夹下
System.IO.DirectoryInfo diB = new System.IO.DirectoryInfo(@"F:\Temp\B");
System.IO.FileInfo[] fiB = diB.GetFiles();
//foreach (FileInfo tmpfiB in fiB)
//{
// tmpfiB.CopyTo(@"F:\Temp\A\" + tmpfiB.Name, true);
//}
//或者将B文件夹中存在A文件夹中没有或比A文件夹中的更新的B文件夹中的文件复制到A文件夹下
foreach (FileInfo tmpfiB in fiB)
{
if (File.Exists(@"F:\Temp\A\" + tmpfiB.Name))
{
FileInfo tmp = new System.IO.FileInfo(@"F:\Temp\A\" + tmpfiB.Name);
if (tmpfiB.LastWriteTime.CompareTo(tmp.LastWriteTime) != 0)
{
tmpfiB.CopyTo(@"F:\Temp\A\" + tmpfiB.Name, true);
this.label2.Text += "\n A Update " + tmpfiB.Name;
}
}
else
{
tmpfiB.CopyTo(@"F:\Temp\A\" + tmpfiB.Name, true);
this.label2.Text += "\n A Copy " + tmpfiB.Name;
}
}
IsComplete = true;//本次操作已完成 可进行下次操作
}
private void timer1_Tick(object sender, EventArgs e)
{
if (IsComplete)
{
this.backgroundWorker1.RunWorkerAsync();
}
this.label1.Text = DateTime.Now.ToString();
}
}
}
//先将A文件夹中存在而B文件夹中没有的A文件夹中的文件删除
//再直接将B文件夹下的文件全部复制到A文件夹下
//或者将B文件夹中存在A文件夹中没有或比A文件夹中的更新的B文件夹中的文件复制到A文件夹下
Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace ImageManager
{
public partial class BackgroundWorkerForm : Form
{
public BackgroundWorkerForm()
{
InitializeComponent();
//
timer1.Interval = 10000;
timer1.Enabled = true;
CheckForIllegalCrossThreadCalls = false;
}
private void button1_Click(object sender, EventArgs e)
{
int iFileCount = 0;
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"F:\Temp\A");
iFileCount = di.GetFiles().Length;
MessageBox.Show("A文件夹下 文件的个数" + iFileCount.ToString());
}
bool IsComplete = true;
//目的是后台定时运行文件同步操作 使A文件夹中的文件与B文件夹中的同步
//先将A文件夹中存在而B文件夹中没有的A文件夹中的文件删除
//再直接将B文件夹下的文件全部复制到A文件夹下
//或者将B文件夹中存在A文件夹中没有或比A文件夹中的更新的B文件夹中的文件复制到A文件夹下
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
IsComplete = false;//本次操作未完成
System.IO.DirectoryInfo diA = new System.IO.DirectoryInfo(@"F:\Temp\A");
System.IO.FileInfo[] fiA = diA.GetFiles();
//先将A文件夹中存在而B文件夹中没有的A文件夹中的文件删除
foreach (FileInfo tmpfiA in fiA)
{
if (!File.Exists(@"F:\Temp\B\" + tmpfiA.Name))
{
tmpfiA.Delete();
this.label2.Text += "\n A Delete "+tmpfiA.Name;
}
}
//再直接将B文件夹下的文件全部复制到A文件夹下
System.IO.DirectoryInfo diB = new System.IO.DirectoryInfo(@"F:\Temp\B");
System.IO.FileInfo[] fiB = diB.GetFiles();
//foreach (FileInfo tmpfiB in fiB)
//{
// tmpfiB.CopyTo(@"F:\Temp\A\" + tmpfiB.Name, true);
//}
//或者将B文件夹中存在A文件夹中没有或比A文件夹中的更新的B文件夹中的文件复制到A文件夹下
foreach (FileInfo tmpfiB in fiB)
{
if (File.Exists(@"F:\Temp\A\" + tmpfiB.Name))
{
FileInfo tmp = new System.IO.FileInfo(@"F:\Temp\A\" + tmpfiB.Name);
if (tmpfiB.LastWriteTime.CompareTo(tmp.LastWriteTime) != 0)
{
tmpfiB.CopyTo(@"F:\Temp\A\" + tmpfiB.Name, true);
this.label2.Text += "\n A Update " + tmpfiB.Name;
}
}
else
{
tmpfiB.CopyTo(@"F:\Temp\A\" + tmpfiB.Name, true);
this.label2.Text += "\n A Copy " + tmpfiB.Name;
}
}
IsComplete = true;//本次操作已完成 可进行下次操作
}
private void timer1_Tick(object sender, EventArgs e)
{
if (IsComplete)
{
this.backgroundWorker1.RunWorkerAsync();
}
this.label1.Text = DateTime.Now.ToString();
}
}
}
相关文章推荐
- c# WinForm 定时执行某个后台操作 如把B文件夹下的文件Copy到A文件夹下
- 打开图片,提示:该文件没有程序与之关联来执行该操作。请在控制面板的文件夹选项中创建关联
- 在ORACLE中实现后台自动执行的定时操作
- windows计划任务后台定时执行java的jar文件
- FTP 打开文件夹提示"该文件没有程序与之关联来执行该操作 请在控制面板的文件夹选项中创建关联
- bat脚本自动扫描制定文件夹下shp文件,并导入数据库,然后执行空间操作
- 在后台定时刷新执行某项操作
- 该文件没有程序与之关联来执行操作,请在控制面板的文件夹选项中创建关联的解决办法
- 该文件没有程序与之关联来执行该操作。请在控制面板的文件夹选项中创建关联 解决代码
- Window Service 创建:在后台执行一个服务,可定时做一些操作,如轮询数据库,定时发邮件
- 该文件没有程序与之关联来执行该操作。请在控制面板的文件夹选项中创建关联 解决代码
- Linux下使用crontab来执行定时任务计划----执行每晚12点多执行移动log日志文件操作
- ICopyHook监控文件夹操作 文件操作监控系列之一
- 机器上的磁盘现在双击打不开了,双击就提示"该文件没有与之关联执行操作!请在控制面板的文件夹选项中创建关联
- 该文件没有程序与之关联来执行该操作。请在控制面板的文件夹选项中创建关联 解决代码
- 该文件没有程序与之关联来执行该操作。请在控制面板的文件夹选项中创建关联。
- Window Service 创建:在后台执行一个服务,可定时做一些操作,如轮询数据库,定时发邮件 .
- Python 文件/文件夹操作(读写read/write、复制copy、删除delete、重命名rename)
- 该文件没有程序与之关联来执行操作,请在控制面板的文件夹选项中创建关联的解决办法
- 这是一个定时脚本,主要功能是遍历该文件夹下的所有文件并存储到数组,对数据中的文件进行操作,一个一个移动到指定的目录下,并删除原有文件