У меня есть форма Windows, которая является модальным дочерним элементом mdi, которая должна отображаться, когда происходит какая-то интенсивная фоновая работа, поэтому пользователь не может использовать какие-либо элементы управления, пока эта работа не будет завершена.
Это очень просто, вот код.
public partial class ProgressForm : Form
{
private int periodCount = 5;
public ProgressForm(String message)
{
InitializeComponent();
messageLabel.Text = message;
}
public void startThread()
{
Thread t = new Thread(new ThreadStart(doWork));
t.IsBackground = true;
t.Start();
}
void doWork()
{
while (true)
{
if (periodCount == 5)
{
periodCount = 1;
}
else
{
periodCount++;
}
switch (periodCount)
{
case 1: periodsLabel.Text = "."; break;
case 2: periodsLabel.Text = ". ."; break;
case 3: periodsLabel.Text = ". . ."; break;
case 4: periodsLabel.Text = ". . . ."; break;
case 5: periodsLabel.Text = ". . . . ."; break;
}
}
}
}
но, periodLabel.Text не меняется, как это и должно быть! Как мне получить его для обновления пользовательского интерфейса при выполнении чего-то еще в фоновом режиме?
ProgressForm progressForm = new ProgressForm("Your database data is being exported, please wait.");
progressForm.ShowDialog();
progressForm.startThread();