读书人

C# 移动文件完成后 怎么知道 操作完成

发布时间: 2013-11-12 12:10:37 作者: rapoo

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后面接着操作就行了
[解决办法]
引用:
点击按钮进去文件移动 ,当所有源目录所有文件移动到目标目录后,如何才能得知移动完成
这是移动方法的源码
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("\\")));
}
}

}


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);
}

异步执行,复制完了通知

读书人网 >C#

热点推荐