获取文件或文件夹复制已完成的状态

本文关键字:已完成 状态 复制 文件夹 文件 获取 | 更新日期: 2023-09-27 18:35:29

我计划开发一个文件组织软件,该软件可以检测文件到达特殊文件夹并将这些文件复制到特定文件夹(例如.txt文件转到文本文档文件夹)。我正在使用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;
                }
        }

获取文件或文件夹复制已完成的状态

很长一段时间后,我为自己的问题找到了解决方案。下面是在 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;
    }

总计给出总大小,长传输给出当前进度