Неверная операция поперечного streamа

Возможный дубликат:
Неверная операция кросс-streamов: управление осуществляется из streamа, отличного от streamа, который был создан на

Хорошо, я знаю, почему это дает мне эту ошибку:

Неверная операция поперечного streamа: элемент управления Form1 доступен из streamа, отличного от streamа, на котором он был создан.

Но … Как я могу сделать это работоспособным?

System.Threading.Thread t = new System.Threading.Thread(()=> { // do really hard work and then... listView1.Items.Add(lots of items); lots more UI work }); t.Start(); 

Меня не волнует, когда, или как Thread заканчивается, поэтому мне не очень-то интересно, что-то необычное или сложное, если только это не упростит работу с пользовательским интерфейсом в новой теме.

Вы не можете. Операции пользовательского интерфейса должны выполняться на принадлежащей теме. Период.

Что вы можете сделать, это создать все эти элементы в дочернем streamе, а затем вызвать Control.Invoke и сделать свою привязку к ним.

Или используйте BackgroundWorker

  BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += (s, e) => { /* create items */ }; bw.RunWorkerCompleted += (s, e) => { /* databind UI element*/ }; bw.RunWorkerAsync(); 

Когда вы получаете доступ к свойству from из другого streamа, это исключение вызывается. Чтобы обойти эту проблему, существует как минимум 2 варианта.

  1. Выдавать контрольные данные, чтобы исключить эти исключения (что не рекомендуется):

    Control.CheckForIllegalCrossThreadCalls = false;

  2. Использование поточных функций:

     private void ThreadSafeFunction(int intVal, bool boolVal) { if (this.InvokeRequired) { this.Invoke( new MethodInvoker( delegate() { ThreadSafeFunction(intVal, boolVal); })); } else { //use intval and boolval } } 
  • Размер шрифта Bind в JavaFX?
  • Почему большинство пользовательских интерфейсов однопоточных?
  • JButton ActionListener - обновление GUI только после нажатия JButton
  • Сетка изображений внутри ScrollView
  • Почему мои вещи не отображаются в JFrame?
  • Android: что выбрать для значений кода запроса?
  • как выйти из блокировки XNextEvent xlib
  • Отправка сообщений между двумя объектами JPanel
  • Как отобразить более трех уровней расширяемого вида списка?
  • Как отобразить текущее значение предпочтения Android в сводке предпочтений?
  • Удалить границу нижней границы в панели вкладок? (И изменить выбранный цвет)
  • Давайте будем гением компьютера.