2012-02-21 2 views
0

Я создаю фоновый рабочий поток и загружаю данные в него и показываю в пользовательском интерфейсе. Я знаю, что проблема заключается в показе данных в пользовательском интерфейсе (потому что это поток пользовательского интерфейса) Но я получаю данные с сервера в виде блоков. Предположим, что в первый раз получите 10 записей, затем мне нужно обновить Ui, а затем вызвать следующие записи.Работа с перекрестными потоками недействительна в C#?

Как решить эту проблему? Спасибо.

+0

Итак, в чем проблема? –

+0

Проблема заключается в том, что когда я вызываю метод UpdateUserUI(), он дает ошибку «Неверная операция поперечного потока» – user662285

ответ

1

Если вы используете BackgroundWorker, вам необходимо использовать функцию отслеживания отчетов.

Что я обычно делаю, это выполнить работу, требуемую внутри метода DoWork, и когда вы хотите обновить графический интерфейс, вызовите worker.ReportProgress с необходимыми данными. Затем в методе прогресса отчета обновите графический интерфейс, так как этот метод будет запущен в потоке графического интерфейса. Также убедитесь, что вы установили WorkerReportsProgress в true, иначе вы получите исключение при попытке позвонить ReportProgress.

+0

Но мое требование - получить некоторые n записей (например, 10), обновить пользовательский интерфейс, затем вызвать другие записи, а затем обновить интерфейс. Когда я вызываю updateUI после 10 записей дает Cross Exception. – user662285

+0

Это моя точка зрения. В 'DoWork', получите 10 записей, затем вызовите' ReportProgress' и обновите GUI, в 'DoWork' получите еще 10 записей и снова вызовите' ReportProgress'. Продолжайте, пока не будут прочитаны все записи. –

+0

Отчет Прогресс ожидает процентного параметра, что я должен дать за это ... – user662285