C# 事件处理与线程的有关问题

C# 事件处理与线程的问题
现在在改以前别人写的一个项目,以前的程序处理流程是:在主程序中注册了几个事件,事件处理程序中将收到的传输信息添加到消息队列中去,然后在类对象smp中创建了处理线程将传输信息从消息队列取出来处理。整个过程是没有问题的。
但是在遇到并发信息特别大时,这个主程序中的事件处理就成为了瓶颈,容易造成界面无响应的情况。
现在考虑将主程序中的事件响应放到线程中去处理,不知道这个想法对不对?还有就是该怎样处理跟合理?我才学C#一个多月,对很多多线程的处理没有设计上的逻辑,还望大家多多指教,谢谢大家了。
下面是部分代码:
private void ServerForm_Load(object sender, EventArgs e)
{
……
this.Server.ConnectionOvertime += new ConnectionOvertimeDelegate(Server_ConnectionOvertime);//注册超时事件
this.Server.ServerMessageHandler += new ServerMessageHandlerDelegate(Server_MessageHandler);//注册传输消息事件
this.Server.Start();
this.smp = new ServerMessageProcesser(this.Server);//初始化消息处理对象smp,smp负责传输消息事件的具体操作
……
}
------解决方案--------------------
1.使用多线程最好的前提就是看资源使用情况,比如说我同时操作多个word,就可以开多线程。但是如果我同时对一个Word操作不同部分,实际上也可以,但是处理起来相当繁琐。

2.其实你这种情况可以考虑为你的事件响应开一个后台线程(可以使用BackGroundWorker)

一下可以写在你的事件响应函数里:

 Backgroundworker worker =new Backgroundworker();
worker.DoWork+=new DoWorkEventHandler((sender,e)=>
{
//ToDo
//界面提示数据处理中...
//后台加载数据
});

worker.ProgressChanged+= new ProgressChangedEventHandler((sender,e)=>
{
//ToDo
});

worker.RunWorkerCompleted+=new RunWorkerCompletedEventHandler((sender,e)=>
{
//数据已加载完毕
});

3.剩下的看你的应用场景是否符合多线程
------解决方案--------------------
后台线程可以帮你解决界面无响应的问题
------解决方案--------------------
 public bool isStopThread