Мой главный процесс:Невозможно обновить пользовательский интерфейс с Invoke() и BeginInvoke() в C#
public void quoteStartReceive()
{
Thread thdWrite = new Thread(new ThreadStart(DoParseGUIDisplay));
thdWrite.IsBackground = true;
thdWrite.Start();
}
Моя функция потока:
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;
}
}
}
}
}
Независимо от того, я пытался использовать Invoke() или BeginInvoke (), Я не могу обновить текст в textBox1. Я также попробовал другой путь:
public delegate void UpdateTextCallback(string text);
Он по-прежнему не может помочь мне обновить мою textBox1.
Помогите мне узнать, что я пропустил. Благодарю.
Я обнаружил, что каждый раз, когда обновлялся m_last, свойство textBox1.InvokeRequired было true. После завершения этого процесса «this.textBox1.BeginInvoke ((MethosInvoker) delegate() {this.textBox1.Text = msg;};», свойство InvokeRequired все еще было правдой. Таким образом, он не может перейти в «else», условие для обновления моего textBox1. –