Я могу показать использованию прогресса копии файла FileInfo. CopyTo () в.NET?

Вы можете использовать ANSICON для включения кодов терминалов ANSI в современных Windows. Существуют 32 и 64-разрядные версии, которые я использовал в Windows XP и Windows 7.

30
задан Jason Down 7 November 2008 в 03:28
поделиться

3 ответа

FileInfo. CopyTo является в основном оберткой вокруг вызова API Win32 "CopyFile" в kernel32.dll. Этот метод не поддерживает обратный вызов прогресса.

Однако метод CopyFileEx делает, и можно записать, что собственная обертка.NET вокруг этого за несколько минут, как он описана здесь: http://www.pinvoke.net/default.aspx/kernel32.CopyFileEx

34
ответ дан 27 November 2019 в 23:15
поделиться

Поскольку любовь к Богу не реализует Вашу собственную копию файла с помощью потоков! Вызов API Win32 CopyFile, который упомянул Gaspar, может использовать в своих интересах, например, DMA, тогда как я поставил доллары к пончикам, что код, который написал Will, не будет достаточно "умен", чтобы сделать это.

CopyFileEx будет рассматривать Вас правильный, или Вы могли реализовать BackgroundWorker, который наблюдает растущий размер конечного файла и обновляет индикатор выполнения с помощью той информации. Последний метод сохраняет Вас PInvoke, но первый является, вероятно, немного более чистым в конечном счете.

6
ответ дан 27 November 2019 в 23:15
поделиться

Для этих видов вещей я отступил к Shell32 (или это ShellUI? Я больше не знаю). Это дает Вам собственное диалоговое окно Windows, что пользователи привыкли видеть копирование операций. Я предполагаю, что это заменило бы Ваше уже существующее диалоговое окно, таким образом, это не может быть правильный ответ для Вас, но полезно помнить за тех "в повышении" сценарии.

Microsoft.VisualBasic.FileIO.FileSystem.CopyFile(
    srcPath, 
    dstPath, 
    Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,    
    Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException
);

Да, необходимо сослаться на Microsoft. Блок VisualBasic. Я вырос до любовь этот блок.

5
ответ дан 27 November 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: