我现在的程序是这样的:我的程序中主程序处理线程中处理各种消息,并在主界面中显示。现在是使用的一个委托代码如下:
//更新系统消息
private delegate void FlushForm(string message); private void flushForm(string message)
{
if (this.lb_Message.InvokeRequired || this.Lb_Count.InvokeRequired)
{
FlushForm i = new FlushForm(flushForm);
this.Invoke(i, message);
}
else
{
try
{
if (this.lb_Message.Items.Count > 500)
this.lb_Message.Items.Clear(); if (!String.IsNullOrEmpty(message))
lb_Message.Items.Add(message);
this.lb_Message.SelectedIndex = this.lb_Message.Items.Count - 1; this.Lb_Count.Text = "当前连接用户:" + this.smp.loginUsers.Count.ToString();
}
catch { }
}
}但是这样做似乎有点问题是,消息太多,而且电脑处理速度慢时就会在显示消息时卡住主线程,从而卡死了消息处理操作。
现在我想这样,用一个单独的线程显示消息在主界面上,但是我在逻辑处理上就有点不清楚了(我才学C#一个月很多都还不清楚),要是在每个显示消息的地方创建一个线程显示消息就会存在显示完了之后不知道怎么结束线程的处理,而且这样做也不好,大量消息来的时候一次性就要创建大量的线程。所以希望各位帮我理一理逻辑上的思路,给些参考,谢谢大家