Вопрос: Background worker? И вопрос: Доступ к файлу запрещ | Добавлено: 18.05.09 23:38 |
Автор вопроса: ![]() |
Привет всем!
Для чего нужен Background worker, и как с ним работать? Если можно небольшой примерчик? И еще вопросик: Например идет перебор и добавление файлов в листбокс для обработки ошибок используется try cath доходит до определенного файла к которому нет доступа выдает сообщение что доступ к файлу или папке запрещен и все перебор останавливается. Вопрос как правильно обработать такую ситуацию, выдать соответствующее сообщение и перейти к следующему файлу не прерывая работы? |
Ответы | Всего ответов: 33 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 4 Ответов: 457 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 19.05.09 01:10 |
код в студию! |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 19.05.09 08:22 |
1.
Background Worker - это обертка потока. Поток - это подпрограмма, которая работает параллельно с основным кодом, и работает она абсолютно ассинхронно. Возможно и на другом ядре, если у тебя многоядерный проц. Суть проста: в событии воркера DoWork пишешь код, потом вызывваешь у воркера метод RunWorkerAsync и код, написанный в DoWork запускается. Разница между обычной процедурой и запуском потока состоит в том, что после вызова подпрограммы твой код идет дальше, и не дожидается окончания выполения того, что написано в DoWork у воркера. Оно работает само посебе независимо от проги. Ты можешь обращаться к общим переменным из другого потока, но работу с интерфейсом можешь осуществлять только из главного потока, в котором у тебя висит окно. Я думаю, с этим тебе пока связываться не стоит, ибо многопоточность - штука серьезная, требующая глубокого понимания. 2. Тупо и просто: обработчик ошибок суешь в отдельную процедуру, и вызываешь ее для всех файлов. Если происходит ошибка, код прерывается только на уровне процедуры, а цикл переходит к следующему файлу. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 28 Ответов: 25 |
Профиль | Цитата | #3 | Добавлено: 19.05.09 13:07 |
2 VβÐ Uηit
Спасибо. С обработчиком не въехал извини. 2 Дмитрий код в студию!
Вот такой код, не идеальный но пока умею только так.
|
Номер ответа: 4 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 11 |
Профиль | Цитата | #4 | Добавлено: 19.05.09 16:48 |
Попробуй:
Таким образом, сначала создаем список папок, непосредственно входящих в данную, а затем их по очереди просматриваем и заносим в ЛистВью. Недостаток: может считать весьма долго. Ну и до оптимизации кода далеко. Однако же все что надо, она мне предоставила. Примечание: Me.Text... - встречается 2 раза . Это тестовое: показывает кол-во папок верхнего уровня/кол-во файлов в ЛистВью. Сошлось с системой, если убрать в настройке вида папки (в Винде) скрытие системных файлов (винда на это злодеяние ругается ![]() |
Номер ответа: 5 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 11 |
Профиль | Цитата | #5 | Добавлено: 19.05.09 16:49 |
Ой!
![]() |
Номер ответа: 6 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 11 |
Профиль | Цитата | #6 | Добавлено: 19.05.09 16:52 |
Сцуко! Б---ские смайлы. Убери = и все за ним в этой строке. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 19.05.09 17:16 |
Ээ... кажецо ща надо будет считать Дмитриев... |
Номер ответа: 8 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 11 |
Профиль | Цитата | #8 | Добавлено: 19.05.09 17:22 |
VβÐ Uηit пишет:
Ээ... кажецо ща надо будет считать Дмитриев... Не, вопрос задал один, а отвечал другой ![]() |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 28 Ответов: 25 |
Профиль | Цитата | #9 | Добавлено: 19.05.09 18:11 |
2 Дмитрий
Спасибо за код буду пробовать. 2 VβÐ Uηit Ээ... кажецо ща надо будет считать Дмитриев...
![]() |
Номер ответа: 10 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 11 |
Профиль | Цитата | #10 | Добавлено: 19.05.09 19:34 |
Автор ответов 1,4,5,6,8 один и тот же - я ![]() Просто немножко нахалтурил с учетками на форуме: на одном компе заходил под одной, а на другом - под другой. Исправлюсь. И по поводу списка файлов: зачем это вообще надо? какой смысл в получении списка (не структурированного) ВСЕХ файлов на диске?! Я при тестировании указал искать в системном диске - растянулось минут на 5 удовольствие (там всего около 55000 файлов). Ну и список получил соответствующий - практически бесполезный для юзера... Дмитрий (автор вопроса), зачем ЭТО ? |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 19.05.09 20:57 |
астянулось минут на 5 удовольствие (там всего около 55000 файлов)
Везет... У меня на компе по последней Dr.Web'овской проверке их 14 миллионов... ![]() |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 4 Ответов: 457 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 19.05.09 22:30 |
Сикоки-сикоки?! На одном только логическом диске с системой и установленными прогами?! Доктор явно врет!
А все ж вопрос остался: зачем пользователю список файлов со всего диска?! |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #13 | Добавлено: 20.05.09 08:37 |
У меня три жестких диска - на каждом из них по одному логическому. |
Номер ответа: 14 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 11 |
Профиль | Цитата | #14 | Добавлено: 20.05.09 08:47 |
Мдя...
Вот и заостряется вопрос о целесообразности получения этого списка. Может, автор вопроса расскажет подробнее, зачем ему надо это? Авось чего интереснее и производительнее придумаем... Вот только где же он? |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 29 Ответов: 284 |
Web-сайт: Профиль | Цитата | #15 | Добавлено: 20.05.09 11:34 |
Автор вопроса: Дмитрий
Дмитрий №1 пишет:
А все ж вопрос остался: зачем пользователю список файлов со всего диска?! Следовательно автор не этот Дмитрий, т.к. он бы знал зачем ему весь список! Дмитрий №2 пишет:
Может, автор вопроса расскажет подробнее, зачем ему надо это? Авось чего интереснее и производительнее придумаем... Вот только где же он? Этот Дмитрий тоже не автор... Лично я уже сбился кто есть кто Оо! |
|