Неверная операция поперечного 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 } } 
  • Как предотвратить перемещение окон?
  • java - Как бы я динамически добавлял компонент swing в gui при нажатии?
  • Какова связь между ContentPane и JPanel?
  • Как сделать AWT Button () и использовать ImageIcon (), Icon ()?
  • Мероприятия по событиям в саперах
  • Пользовательские заголовки / хром в приложении WinForms
  • Слушатель модели JTable слишком быстро обнаруживает вставленные строки (до их рисования)
  • Как определить несколько действий JButton из другого classа
  • В чем разница между fill_parent и wrap_content?
  • Android ViewPager с нижними точками
  • Отправка сообщений между двумя объектами JPanel
  • Interesting Posts

    Перетаскивание из источника данных в окно WPF не работает

    Слияние нескольких строк

    Откройте новую вкладку в том же каталоге

    Как подавить предупреждения «низкой памяти» в Vista Home Premium при работе без файла подкачки?

    Блокировать доступ к веб-сайту через http, но не https, через etc / hosts?

    Обработка вопросов собственности на указатель-указатель в ARC

    как вычислить сходство между двумя строками в MYSQL

    Как динамически загружать Java-class на android / dalvik?

    В XP, как мне переименовать каталог файлов с помощью регулярного выражения или аналогичный, чтобы удалить часть имени файла и добавить префикс?

    Восстановить таблицу разделов, все еще присутствующую в запущенной системе

    Выбор целого столбца, кроме первых X (заголовочных) ячеек в Excel

    Mysql, как исправить Доступ запрещен для пользователя 'root' @ 'localhost'

    Является ли это правильным способом очистки стопы fragmentа при выходе из глубоко вложенного стека?

    Есть ли простой способ превратить int в массив ints каждой цифры?

    Исключение в streamе «main» java.lang.NoClassDefFoundError: org / openqa / selenium / WebDriver

    Давайте будем гением компьютера.