Асинхронное перетаскивание в Проводник Windows - PullRequest
2 голосов
/ 07 марта 2012

Вопрос:

Мне нужно решение DragAndDrop для загрузки файла по капле в папку Windows Explorer для C # и .NET 4.0.Не должно быть необходимости иметь файл на компьютере.Файл будет достаточно большим, чтобы время загрузки не было достаточным для завершения загрузки.Я нашел различные вопросы, даже принял ответы, но ничего, что работает.Самая близкая вещь к чему-то работающему - это демонстрационный проект:

http://blogs.msdn.com/b/delay/archive/2009/11/16/creating-something-from-nothing-and-knowing-it-developer-friendly-virtual-file-implementation-for-net-refined.aspx

Как реализовать этот код для загрузки файла как часть действия по его переносу в WindowsПроводник

Ответы [ 2 ]

5 голосов
/ 17 марта 2012

Веб-браузеры решают эту проблему каждый день. Немного упростив их модель, сделайте так:

  1. Создайте небольшую программу, которая выполняет загрузку с соответствующими параметрами командной строки. Эта небольшая программа должна открыть окно с индикатором выполнения и кнопкой отмены.

  2. Создайте эту вторую программу всякий раз, когда пользователь что-то «отбрасывает». Эта программа немедленно создаст целевой файл и начнет заполнять его данными. Он будет поддерживать соответствующие блокировки файла до завершения загрузки, после чего «загрузчик» завершит работу.

Если вы хотите сохранить потоки "загрузчика" в исходной программе, вам понадобится какой-то менеджер загрузок, чтобы пользователь мог получать соответствующие отзывы о своих загрузках.

4 голосов
/ 16 марта 2012

Хорошо, как сказал Yahia в комментариях, невозможно без правильного расширения оболочки для разных версий Windows и .NET. Возможно, вам повезет с ссылкой, которую я разместил, но для меня это приводит к сбою проводника, и разработчик считает, что он работает нормально.

Мое честное мнение, что только с .NET вы можете делать это только с FileSystemWatcher, копируя специальные файлы .temp, наблюдая за тем, как они приземляются, выполняя вашу задачу и заменяя файлы .temp, когда ваша задача выполнена. Печальные окна.

...