0

我打算开发一个文件组织软件,它检测文件到达特殊文件夹并将这些文件复制到特定文件夹(例如 .txt 文件到 Text Doc 文件夹)。我正在使用 FileSystemWatcher.

用于检测文件。所以我想知道C#代码是否完成了文件或文件夹复制操作(手动复制文件或文件夹)。

使用单文件程序是可以的。但对于多个文件需要改进程序。

我使用这个循环来检查文件是否被释放,但是对于大文件,这会使程序没有响应。

void File_move(string source,string destination)
        {
            EE:
                try
                {
                    File.Move(source, destination);
                }
                catch (Exception ex)
                {
                    lblStatus.Text = "Waiting for file copping complete";
                    Application.DoEvents();
                    goto EE;
                }

        }
4

1 回答 1

0

很长一段时间后,我为自己的问题找到了解决方案。这是在 c# 和 vb.net 中获取文件复制进度的链接

http://pinvoke.net/default.aspx/kernel32/CopyFileEx.html

在此示例代码中,我们可以获得复制文件的进度

private CopyProgressResult CopyProgressHandler(long total, long transferred, long streamSize, long StreamByteTrans, uint dwStreamNumber,CopyProgressCallbackReason reason, IntPtr hSourceFile, IntPtr hDestinationFile, IntPtr lpData)
    {
        Progressbar.Max=Convert.ToInt32(total);
        Progressbar.Value=Convert.ToInt32(transferred);
        Application.Doevents();
        return CopyProgressResult.PROGRESS_CONTINUE;
    }

long total给出总大小,long transfer给出当前进度

于 2015-08-25T10:25:57.950 回答