首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-11-12 
C# 移动文件完成后 如何知道 操作完成点击按钮进去文件移动 ,当所有源目录所有文件移动到目标目录后,如何

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

异步执行,复制完了通知

热点排行