C # InvalidOperationException UND Cross-Thread-Vorgang [duplizieren]
Diese Frage hat hier bereits eine Antwort:
Threadübergreifender Vorgang nicht gültig: Auf das Steuerelement wurde von einem anderen Thread als dem Thread zugegriffen, für den es erstellt wurde 20 AntwortenIn meinem Windows-Formular habe ich ein Textfeld und eine Schaltfläche, das Textfeld "tb_LogBox" ist ein mehrzeiliges Textfeld. Ich versuche, einen Hintergrund-Worker zu erstellen, der beim Kompilieren eine Funktion aufrufen soll, z. B. "LogTimer.DnT ()" und starte es Visual Studio löst InvalidOperationException aus.
Der tatsächliche Fehler, den ich erhalte, ist ungültig: Auf das Steuerelement 'tb_LogBox' wurde von einem anderen Thread als dem Thread zugegriffen, für den es erstellt wurde. Der folgende Beispielcode veranschaulicht, was ich versuche, zu tun
private void button1_Click(object sender, EventArgs e)
{
try
{
var bw = new BackgroundWorker();
bw.DoWork += ExecuteOperations ;
bw.RunWorkerAsync();
}
catch (Exception ex)
{
tb_LogBox.AppendText(Environment.NewLine + " =@= " + ex.Message+" "+ex.Source);
}
}
private void ExecuteOperations(object sender, DoWorkEventArgs e)
{
var FuncCall = new LogTimer();
tb_LogBox.AppendText(Environment.NewLine + FuncCall.DnT()); // the line i am getting the error. on
}
public class LogTimer
{
public string DnT()
{
const string datePat = @"d/MM/yyyy";
var dateTime = DateTime.Now();
return dateTime.ToString(datePat);
}
}