C# вызов метода основного потока из вторичного, как?
есть основной поток находящийся в ожидании событий. Работает вторичный поток.
задача:
вторичный поток должен периодически вызывать метод из основного потока не останавливаясь при этом.
вопрос:
не знаю как реализовать. Возможно ли, если да, каким путем?
Пробовал через генерацию события вторичным потоком - не получилось. Но учитывая мое понимание языка… Хотя бы что изучать, чтоб время не транжирить.
то так:
delegate void SetControl(string message, Control componentToChange);
void SetText(string progress, Control label)
{
if (this.InvokeRequired )
{
SetControl DDD = new SetControl(SetText);
this.Invoke(DDD, progress, label);
}
else
{
label.Text = progress;
}
}
Происходит - тут, реагирует - там.
Надо чтобы основной процесс не тормозил с реакцией на контролы (кнопки, перетягивание формы по экрану...)
Евент - сам по себе никакой многопотоковости не создает.
То есть, в вашем случае это не поможет (так, чтобы сразу) :-) .
Форму "замораживает" какой-то долгоиграющий процесс, который не дает обрабатывать очередь сообщений.
Вы можете создать обьект с эвентами, подписаться в главной форме на эти эвенты, но! если метод, который эти эвенты поднимает - бежит в другом потоке, то обработчик эвента обязан использовать инвок - то есть, ставить изменения на компонетах формы в очередь сообщений.
D129 спасибо за пояснение