Различие между BackgroundWorker и системой. Поточная обработка. Поток

Файл, который Вы создаете с TemporaryFile или NamedTemporaryFile, автоматически удален, когда он закрывается, который является, почему Вы получаете ошибку. Если Вы не хотите это, можно использовать mkstemp вместо этого (см. документы для tempfile).

>>> import tempfile, shutil, os
>>> fd, path = tempfile.mkstemp()
>>> os.write(fd, 'foo')
>>> os.close(fd)
>>> shutil.copy(path, 'bar.txt')
>>> os.remove(path)

26
задан Icemanind 24 October 2009 в 19:41
поделиться

2 ответа

Класс BackgroundWorker в основном абстрагирует процесс создания и мониторинга Thread , а также предоставляет управляемый событиями API для отчета о ходе операции ( ProgressChanged ) и определить, когда ваша операция будет завершена ( RunWorkerCompleted ) ...

Одно из наиболее распространенных применений - поддержание отклика графического интерфейса Windows во время длительного процесс выполняется в фоновом режиме. По сути, это просто оболочка для System.Threading.Thread, предназначенная для упрощения фоновой потоковой передачи (как следует из названия!)

37
ответ дан 28 November 2019 в 06:55
поделиться

BackgroundWorker на самом деле является оболочкой для вызова асинхронного потока через делегатов - используя отражатель, можно увидеть, что он соответственно вызывает методы вызова начала / конца. Это отличается от System.Threading . Поток в том смысле, что он использует пул потоков, а не запускает новый поток.

Основная причина использования фонового рабочего процесса заключается в том, что он хорошо сочетается с приложениями форм Windows.

18
ответ дан 28 November 2019 в 06:55
поделиться
Другие вопросы по тегам:

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