У меня есть поток данных, поступающих из внешнего источника, который я сейчас собираю в BackgroundWorker
. Каждый раз, когда он получает другую порцию данных, он представляет эти данные в графический интерфейс с помощью вызова ReportProgress()
.
У меня складывается впечатление, что функция ProgressChanged
- это всего лишь механизм синхронизации, хотя, когда мой рабочий поток вызывает это, оба потока блокируются, пока поток GUI обрабатывает изменение. Поэтому я думаю, что проблема в том, что в то время как фоновый поток обновляет графический интерфейс, он не может принимать какие-либо данные, что означает, что мы теряем несколько пакетов. Это верно, или мой пакет, скорее всего, потерял работу в другом месте?
Если это является причиной, то будет ли разумным решением добавить второй поток для обновления GUI или есть более эффективные / более тщательные способы решения этих проблем, в которые я должен вникнуть?
Любые мысли и предложения будут приветствоваться.