Mein Hauptprozess:Kann nicht mit Invoke aktualisieren UI() und BeginInvoke() in C#
public void quoteStartReceive()
{
Thread thdWrite = new Thread(new ThreadStart(DoParseGUIDisplay));
thdWrite.IsBackground = true;
thdWrite.Start();
}
Mein Thread-Funktion:
void DoParseGUIDisplay()
{
for (int i = 0; i < 1024; i++)
{
if (myQueue.Count > 0)
{
string strOut = myQueue.Dequeue().ToString();
Tick tick = new Tick(strOut);
if (tick.m_last != "")
{
string msg = "Update Text";
if (this.textBox1.InvokeRequired)
{
this.textBox1.BeginInvoke((MethosInvoker)delegate() {this.textBox1.Text = msg; };
}
else
{
this.textBox1.Text = msg;
}
}
}
}
}
Egal ich versuchte Invoke() oder BeginInvoke zu verwenden (), Ich kann den Text in textBox1 nicht aktualisieren. Ich habe auch versucht, einen anderen Weg:
public delegate void UpdateTextCallback(string text);
Es kann mich immer noch nicht helfen, meine textBox1 zu aktualisieren.
Hilf mir, herauszufinden, was ich verpasst habe. Vielen Dank.
Ich fand, dass jedes Mal, wenn die m_last aktualisiert wurde, die Eigenschaft textBox1.InvokeRequired wahr war. Nach Abschluss dieses Prozesses "this.textBox1.BeginInvoke ((MethosInvoker) delegate() {this.textBox1.Text = msg;};" war die InvokeRequired-Eigenschaft immer noch wahr. So kann es nicht zu "else" gehen Bedingung, um meine TextBox1 zu aktualisieren. –