WinForm使用异步多线程更新界面UI

在WinForm下如果不使用异步多线程更新UI界面是很方便的因为主线程可以直接操作UI,可以直接操作控件赋值就行了,如:richTextBox1.Text="hello"。

但是使用异步多线程后需要使用控件自身的invoke/BeginInvoke方法来实现

如不带参数

        private void RecvMsg(string identify,string msg) {
            //异步更新界面UI
            Action showUi = () => {
                richTextBox1.Text += ($"id:{identify},msg:{msg}\r\n");
            };
            richTextBox1.Invoke(showUi);
        }

带参数

        private void RecvMsg(string identify,string msg) {

            //异步更新界面UI传参
            Action showUi = (a,b) => {
                richTextBox1.Text += ($"id:{a},msg:{b}\r\n");
            };
            richTextBox1.Invoke(showUi,new object[] { identify, msg });
        }

 

你可能感兴趣的:(C#)