Принудительное обновление графического интерфейса из потока - PullRequest
69 голосов
/ 01 сентября 2009

В WinForms, как принудительно обновить пользовательский интерфейс из потока пользовательского интерфейса?

То, что я делаю, примерно так:

label.Text = "Please Wait..."
try 
{
    SomewhatLongRunningOperation(); 
}
catch(Exception e)
{
    label.Text = "Error: " + e.Message;
    return;
}
label.Text = "Success!";

Текст метки не устанавливается на «Пожалуйста, подождите ...» перед операцией.

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

Ответы [ 11 ]

0 голосов
/ 24 октября 2013

У меня была такая же проблема со свойством Enabled, и я обнаружил, что first chance exception поднято из-за того, что оно не поточно-ориентированное . Я нашел решение о "Как обновить графический интерфейс из другого потока в C #?" здесь https://stackoverflow.com/a/661706/1529139 И это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...