在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<string,string> showUi = (a,b) => {
richTextBox1.Text += ($"id:{a},msg:{b}\r\n");
};
richTextBox1.Invoke(showUi,new object[] { identify, msg });
}