C# 移动文件完成后 如何知道 操作完成
点击按钮进去文件移动 ,当所有源目录所有文件移动到目标目录后,如何才能得知移动完成
这是移动方法的源码
private void CopyFiles(string varFromDirectory, string varToDirectory)
{
Directory.CreateDirectory(varToDirectory);
if (!Directory.Exists(varFromDirectory)) return;
string[] directories = Directory.GetDirectories(varFromDirectory);
if (directories.Length > 0)
{
foreach (string d in directories)
{
CopyFiles(d, varToDirectory + d.Substring(d.LastIndexOf("\\")));
}
}
string[] files = Directory.GetFiles(varFromDirectory);
if (files.Length > 0)
{
foreach (string s in files)
{
File.Copy(s, varToDirectory + s.Substring(s.LastIndexOf("\\")));
}
}
} C# 移动
[解决办法]
if (files.Length > 0)
{
foreach (string s in files)
{
File.Copy(s, varToDirectory + s.Substring(s.LastIndexOf("\\")));
}
}
这个执行完了不就copy完了?
直接再if后面接着操作就行了
[解决办法]
1.方法能否修改一下签名,返回bool,用于标记是否移动成功
2.方法的调用方是同步调用的话,直接判断移动成功后进行后续操作
3.方法的调用方是异步调用话话,调用方加上回调函数,后续操作放到回调函数中
[解决办法]
delegate void CopyFileEventHandler(string OldFileName, string NewFileName);
void CopyFile(string OldFileName, string NewFileName)
{
new CopyFileEventHandler((string sourceFileName, string destFileName) =>
{
File.Copy(sourceFileName, destFileName);
}).BeginInvoke(OldFileName, NewFileName, new AsyncCallback((IAsyncResult Result) =>
{
MessageBox.Show("复制完成!");
}), null);
}
异步执行,复制完了通知