Обновление элементов управления Windows Forms между действиями в цикле for - PullRequest
0 голосов
/ 30 августа 2011

У меня проблема с тем, что я не хочу работать с многопоточными приложениями, так как я тестирую некоторый код, и мне нужен однопоточный.

Обновляет текстовое поле только после того, как все сделано.Мне нужно как-то постоянно обновлять его.Есть ли другой способ, кроме как со вторым потоком?

Ответы [ 2 ]

1 голос
/ 30 августа 2011

Обновляет текстовое поле только после того, как все сделано.Мне нужно как-то постоянно обновлять его.Есть ли другой способ ожидать со вторым потоком?

Нет хорошего способа сделать это.Проблема в том, что если вы выполняете код в потоке пользовательского интерфейса, поток пользовательского интерфейса не может обрабатывать сообщения в насосе сообщений, в том числе те, которые обновляют TextBox, до тех пор, пока ваша работа не будет завершена.В Windows Forms вы можете заставить приложение обрабатывать эти сообщения, вызывая Application.DoEvents () , но это действительно плохая, плохая идея.Гораздо лучше (и безопаснее!) Использовать BackgroundWorker или другой метод многопоточности, чтобы вместо этого перенести работу в фоновый поток.

0 голосов
/ 30 августа 2011

Вы можете попробовать следующее:

// in for loop
tbxMyTextBox.Text = "New text!";
tbxMyTextBox.Refresh();

Я помню, что мне приходилось делать что-то подобное в прошлом.

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