Операция с несколькими потоками недопустима в фоновом режиме c # - PullRequest
0 голосов
/ 18 марта 2019

Я хочу, чтобы код работал в фоновом режиме, но обнаружил эту ошибку:

'Операция с несколькими потоками недопустима: элемент управления' metroComboBox1 'доступен из потока, отличного от потока, в котором он был создан.'

private void metroRename_Click(object sender, EventArgs e)
    {
        if (backgroundWorker1.IsBusy)
            backgroundWorker1.CancelAsync();
        backgroundWorker1.RunWorkerAsync(metroComboBox1.Text);
    }

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        this.Invoke((MethodInvoker)delegate ()
        {
            string text = metroComboBox1.Text;
        });

        if (metroComboBox1.SelectedItem == "TITLE") //error here
        {
           //some code here
        }
    }

Как я могу использовать комбинированный список внутри рабочего фона?

1 Ответ

0 голосов
/ 18 марта 2019

Вы также должны поместить свое условие в Invoke, например,

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    this.Invoke((MethodInvoker)delegate ()
    {
        string text = metroComboBox1.Text;
        if (metroComboBox1.SelectedItem == "TITLE") 
        {
           //some code here
        }
    });        
}

Здесь - существующая тема об этой проблеме

...