воскресенье, 4 декабря 2011 г.

(6) NB: BackGroundWorker

Уважаемое сообщество !

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

Во-вторых. Этот блог не предусматривает изучение класса BackGroundWorker - этого добра в Сети и так предостаточно. Здесь рассматривается всего-лишь один из вариантов решения проблемы достаточно корректной передачи данных из асинхронного (фонового) потока еще до его завершения в основной поток.

В-третьих. Вопросы, рассматриваемые здесь, имеют отдаленное отношение к програаммам-поисковикам файлов и директорий. Этого в И-нете тоже выше крыши. Мои поисковики являются лишь фоном для демонстрации решения проблемы, на которой, судя по многочисленным постам, споткнулось много нашего народа.

В-четвертых. Коды программ-поисковиков в Сети в абсолютном большинстве своем просто бракованные. У меня сложилось совершенно устойчивое впечатление, что они работают только на отдельно взятых компьютерах. Например, вырвали код, интегрированный в программу, и даже не сомневаются, что он и у других заработает. Кроме того, я подозреваю, что в Штатах вообще какой-то особый Windows. Судя по всему, у них нет скрытых системных папок, о которые обычно спотыкаются поисковики (обычно - потому что поиск средствами FSO, насколько помню, ошибок не выдает, а такие папки спокойно обнаруживаются наравне с другими). В принципе, вполне достаточно в нужном месте отловить и проигнорировать исключение, например, следующим способом - и нет никаких проблем:

Try
'Your code
 Catch err As UnauthorizedAccessException

'If not access to directory then ignore error
End Try


В-пятых. Если сообществу все еще требуются собственно поисковики файлов и директорий, то я готов открыть здесь же новый блог. Естественно, исходники будут реально работающими.
К примеру, сейчас в моем распоряжении имеется проект поисковика (FileSystemEnumerator.zip) одного немца (Herfried K. Wagner). Выложу в новом блоге "как есть", за одним исключением. Там также при поиске выскакивает UnauthorizedAccesException, и я взял на себя смелость исправить это досадное недоразумение. При этом, для тех, кто не владеет немецким, сообщаю, что в Readme.txt он всего лишь говорит, что его программа предназначена для реализации рекурсивного поиска. В License.txt (на английском) он ставит жесткое условие о некоммерческом использовании его кода - как полностью, так и в любой части. Достоинством его является то, что во время поиска нет эффекта "зависания".
Короче, разбирайтесь сами. Сейчас мне не до этого. Надо сходить проголосовать, ведь сегодня - выборы. Если будет вечером времечко, то создам новый блог и выложу этот исходник. Кстати, он прилично откомментирован.

До встречи в эфире.

Комментариев нет: