无法使用C#中的Invoke()和BeginInvoke()更新UI

时间:2016-07-18 08:38:23

标签: invoke begininvoke

我的主要流程:

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。

帮助我找出我错过的东西。感谢。

1 个答案:

答案 0 :(得分:0)

在线程前加上一个参数:

Application.DoEvents();

并且应该在更新m_last之后放置。