Я использую запись потока в другом классе для обновления метки. Метка - это содержимое в основном классе Winform.
Scanner scanner = new Scanner(ref lblCont);
scanner.ListaFile = this.listFiles;
Thread trd = new Thread(new ThreadStart(scanner.automaticScanner));
trd.IsBackground = true;
trd.Start();
while (!trd.IsAlive) ;
trd.Join();
Как вы можете видеть, я передаю ссылку метки в конструктор второго класса. Во втором классе (сканер) у меня есть метод под названием "automaticScanner", который должен обновить метку с помощью этого кода:
public Scanner(ref ToolStripStatusLabel _lblContatore)
{
lblCounter= _lblContatore;
}
Thread threadUpdateCounter = new Thread(new ThreadStart(this.UpdateCounter));
threadUpdateCounter.IsBackground = true;
threadUpdateCounter.Start();
while (!threadUpdateCounter .IsAlive) ;
threadUpdateCounter.Join();
private void AggiornaContatore()
{
this.lblCounter.Text = this.index.ToString();
}
Я получаю эту ошибку при обновлении метки:
Неверная операция поперечного потока: элемент управления 'Main' доступен из потока, отличного от потока, который был создан на
Я использую .net 4 с Winform С#.
Большое спасибо за ответы.
Новости: Проблема заключается в этой строке:
trd.Join();
Эта строка блокирует мой графический интерфейс, а макет не обновляется. Существуют методы контроля финиша потока и обновления метки до конца? Благодаря