Операция перекрестного потока, не допустимая: Управление получило доступ от потока кроме потока, на котором оно было создано

Добавляют начинающего к "Параметрам настройки системы":

Нажатие Высокий звук + F2 и выполненный gksu gedit /usr/share/applications/computer-janitor-gtk.desktop, введите свой пароль root при выяснении.

Добавляют X-GNOME-Settings-Panel;X-GNOME-SystemSettings; к строке "Categories=System;Настройки; PackageManager; GTK";.

Добавляют новую строку X-GNOME-Settings-Panel=computer-janitor-gtk в конец файла, сохраняют и закрываются.

Удаляют значок из Средства запуска через, щелкают правой кнопкой по в †’ Remove from Launcher.

И Вы добираетесь:

system settings

Средства запуска приложений хранятся в ~/.local/share/applications или в/usr/share/applications/(чтобы отредактировать Вас, должны открыться gksu nautilus - но не портят Вашу систему!).Примечание: Когда приложение becames обновленный, часто .desktop файл becames обновленный, также (в/usr/..., не в ~/.local/...)

[еще 1115] информация о Средствах запуска Вы находите в Общественном Wiki Справки.

7
задан 30 August 2009 в 13:22
поделиться

3 ответа

Вы должны использовать метод Invoke в форме, например, с анонимным делегатом, чтобы внести изменения в ответ на событие.

Обработчик события вызывается другим потоком. Этот второй поток не может получить доступ к элементам управления в вашей форме. Он должен «вызвать» их, чтобы поток выполнял всю контрольную работу, которая изначально их создавала.

Вместо:

myForm.Control1.Text = "newText";

вы должны написать:

myForm.Invoke(new Action(
delegate()
{
  myForm.Control1.Text = "newText";
}));
10
ответ дан 6 December 2019 в 14:06
поделиться

Вы пытаетесь обновить пользовательский интерфейс из потока, отличного от пользовательского интерфейса. Пользовательский интерфейс имеет привязку к потоку и может быть обновлен только из потока, который его создал. Если вы используете WinForms, ознакомьтесь со статьей MSDN Как выполнять потокобезопасные вызовы элементов управления Windows Forms . Обычно вам нужно обновить пользовательский интерфейс с помощью метода Control.Invoke . Для WPF

4
ответ дан 6 December 2019 в 14:06
поделиться

В основном у вас должно быть два потока в вашем приложении, по крайней мере, и поток, в котором работает ваша логика управления, отличается, поэтому вы получаете эту ошибку, поскольку элементы управления не являются потокобезопасными.

Это сделано для защиты вас от проблем, которые могут быть вызваны одновременным изменением одного и того же элемента управления несколькими потоками.

Вы можете найти более подробную информацию, посмотрев здесь: http://msdn.microsoft.com/en-us/library/ms171728%28VS.80%29.aspx

1
ответ дан 6 December 2019 в 14:06
поделиться
Другие вопросы по тегам:

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