Я разрабатываю форму, в которой мне нужно увеличить индикатор выполнения, когда операция выполняется одновременно (другими словами, я показываю ход этой операции).Эта операция занимает 50 секунд.Поэтому я использовал System.Timer
, чтобы увеличить индикатор прогресса.
В моем коде нет ни одной темы.Когда я пишу Progress_bar.PerformStep()
в обработчике событий таймера, он выдает ошибку «Операция с перекрестными потоками недействительна».
[Из этой ошибки я проанализировал, что System.Timer
должен создавать поток и запускает в нем таймер для выполнения нескольких задач.]
Что я должен делать, чтобы увеличивать индикатор выполнения после каждогоВторой?
Я пробовал решение, данное в этом вопросе.Ошибка устранена, но теперь я не вижу увеличения индикатора выполнения.Означает, что начинается .... Нет увеличения в течение 50 секунд и после этого на 100%.
Код выглядит следующим образом:
Объявление таймера (глобальное):
public System.Timers.Timer Thetimer = new System.Timers.Timer(1000);
Объявление события (Это в Конструкторе, чтобы сделать его ... ошибаться ... Общедоступным [Не может быть правильным словом]):
Thetimer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
Вызов:
Thetimer.Start();
blRetVal = FunctionToBeExecuted(parameter);
Thetimer.Stop();
Обработчик событий:
void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
//StatusBar.PerformStep(); -- Tried This. It gives the Error
/* This doesn't give an error but Another issue Arises */
if (InvokeRequired)
{
BeginInvoke(new Action(StatusBar.PerformStep));
}
else
StatusBar.PerformStep();
}
PS Я использую C # и Visual Studio 2008