ФОН : у меня есть приложение WindowForms v3.5 с установленным StatusStrip для использования в качестве TooStripStatusLabel. Я выпускаю довольно много обновлений для него во время выполнения задачи, однако бывают заметные периоды, когда она ЗАПУСКАЕТСЯ. Там также нет смысла, когда я пишу пробел на метку строки состояния либо.
ВОПРОС : Есть идеи, почему я вижу период, когда метка строки состояния пуста, а я не ожидаю, что это будет?
Как мне его обновить:
private void UpdateStatusStrip(string text)
{
toolStripStatusLabel1.Text = text;
toolStripStatusLabel1.Invalidate();
this.Update();
}
PS. Вызов Application.DoEvents () после this.Update (), похоже, не помогает. Я на самом деле вызываю это через элемент управления backgroundworker, так что:
(а) Я запускаю фонового работника:
private void Sync_Button_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
DisableUpdateButtons();
}
(b) фоновый работник вызывает обновления:
private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
backgroundWorker1.ReportProgress(1, "Example string");
MainForm.MyC.SyncFiles(sender);
}
(c) Бизнес-класс MyC также использует его, например,
public void SyncFiles(object sender)
{
BackgroundWorker bgw = (System.ComponentModel.BackgroundWorker) sender;
bgw.ReportProgress(1, "Starting sync...");
.
.
.
}
(d) Это событие подхватывает:
private void backgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
UpdateStatusStrip((string)e.UserState);
}
(e) И снова полоса обновления состояния
private void UpdateStatusStrip(string text)
{
toolStripStatusLabel1.Text = text;
toolStripStatusLabel1.Invalidate();
this.Update();
}
Помогает ли это?