Member 12242717 Ответов: 1

Недопустимая операция кросс-потока: управление "панелью" осуществляется из потока, отличного от потока, в котором она была создана


I try to press button hold and this type of error occurred. Short Press work better but while press long (Cross-thread operation not valid: Control 'panel' accessed from a thread other than the thread it was created on.) this type of error occurred.


Что я уже пробовал:

loopTimer = новый таймер();
петлитель.Интервал = 1000;
петлитель.Enabled = false;
петлитель.Прошедшее время += loopTimerEvent;
петлитель.Автоматического сброса = истина;

public bool long_press = false;
частный недействительными loopTimerEvent(источник, объект, ElapsedEventArgs е)
{

петлитель.Располагать();
long_press = истина;
panel_animatedOrders.Покажите();


}
public void newdowntable_Click(отправитель объекта, MouseEventArgs e)
{
петлитель.Включен = истина;
этикетка 1.Текст = ((кнопка)отправитель). имя;
btn_one.Текст = ((кнопка)отправитель).Имя + "" + " A";
btn_two.Текст = ((кнопка)отправитель).Имя + "" + " B";
btn_three.Текст = ((кнопка)отправитель).Имя + "" + " C";
btn_four.Текст = ((кнопка)отправитель).Имя + "" + " D";

k_one.Текст = ((кнопка)отправитель).Имя + " .1";
k_two.Текст = ((кнопка)отправитель).Имя + " .2";
к_три.Текст = ((кнопка)отправитель).Имя + " .3";
k_four.Текст = ((кнопка)отправитель).Имя + " .4";

btn_kitchenOrderNumber.Текст = ((кнопка)отправитель). имя;
}
public void newupTable_Click(отправитель объекта, MouseEventArgs e)
{
петлитель.Enabled = false;
если (long_press==ложь)
{
этикетка 1.Текст = ((кнопка)отправитель). имя;
Контроль ctls = это.Родитель;
KOTOrder vieret = новый KOTOrder(метка1.Текст, btn_kitchenOrderNumber.Текст);
ЦТЛ.Управления.Четкий();
ЦТЛ.Управления.Добавить (vieret);
}
long_press = ложь;
}

1 Ответов

Рейтинг:
2

OriginalGriff

Сообщение об ошибке довольно явное:

Control 'panel' accessed from a thread other than the thread it was created on.

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

Чтобы получить доступ к элементу управления из другого потока, вы должны вызвать его: Практическое руководство практическое руководство.[^] или используйте BackgroundWorker, который может сообщать о прогрессе обратно в основной поток через событие.