Я использую это, чтобы обновить элемент управления в главном потоке из другого потока:управления Обновление в главном потоке, используя EventHandler
private void ShowHourGlassSafe(bool visible)
{
this.Invoke((EventHandler)((s, ev) => pictureBoxHourGlass.Visible = visible));
}
Интересно, каковы последствия делают это таким образом, или если есть какие-либо риск, что это провалится?
Из многих примеров можно найти то же самое, что я не мог найти такого.
Возможно, это просто неправильно?
К вашему первому пункту вы будете только тупиком, если что-то, что блокирует поток пользовательского интерфейса, ждет в фоновом потоке. Если нет, вы просто блокируете какое-то время, не зацикливая *. – Servy
Кроме того, я помню, что он заметил, что «Control.Invoke» оптимизирован для нескольких конкретных делегатов, из которых «Action» не является одним из них, что не позволяет использовать его для всех вызовов Invoke. – Servy
Мне пришлось изменить его на this.BeginInvoke (новое действие