![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Сделал прогу-апдейтер, которая проверяет сервер на наличие обновлений для другой программы. Возникла проблема с получением прогресса копирования файла. Ну нету вот у метода File.Copy(...) в нэймспэйсе System.IO возможности установить callback функцию, как это к примеру реализовано в WinAPI функцией CopyFileEx(...). Кто-нибудь знает, как можно получить этот прогресс в .NET без непосредственного вызова функций WinAPI?
--------------------
Даешь открытые исходники! |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 1 Всего: 37 |
Замеряй размер dest-файла на таймере
|
|||
|
||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Рационально ли это? Неужели нету методов асинхронного копирования с вызовом callback функций? --------------------
Даешь открытые исходники! |
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Сомневаюсь, что рационально, но когда-то давно для проверки скорости сд-рома делал так, копировал по байтам
А что мешает вызывать эту функцию? -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| Stepan_Lameroff |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 16.12.2006 Репутация: 9 Всего: 14 |
Думаю, Вам будет интересно.
Sequential File Programming Patterns and Performance with .NET Source Code Это сообщение отредактировал(а) Stepan_Lameroff - 28.4.2007, 17:43 |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
Так сделай отдельный поток, запускай там File.Copy(), когда отработает, вызывай какую-нибудь функцию - она будет выполнять типа callback-а.
Все асинхронные операции так же устроены, только поток среда сама создает. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| Stepan_Lameroff |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 16.12.2006 Репутация: 9 Всего: 14 |
tol05 а можно поподробнее, plz.
Я всю жизнь думал (и делал), что прогресс копирования можно отобразить или используя WinAPI CopyFileEx, или ручками реализовывая копирование через FileStream. |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
Сделал в двух рабочих потоках.
Копирование и callback - без проблем, а вот с прогрессом на реальном кол-ве байтов - получается сложновато. Не учел я что File.Size тупо финальный размер показывает. Так что текущий размер копирующегося файла узнаю через Stream-ы. Так что пример наверное показывать не буду. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
В общем, конечно, ничто не мешает... Просто я хотел узнать, можно ли проблему решить средствами .NET Добавлено через 4 минуты и 40 секунд ЗЫ. Вопрос решён,тема закрыта. --------------------
Даешь открытые исходники! |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |