我打算开发一个文件整理软件,该软件可以检测文件到达特殊文件夹并将这些文件复制到特定文件夹(例如,.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;
}
长总数表示总大小,长传送表示当前进度
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句