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.剩下的看你的应用场景是否符合多线程

解决方案 »

  1.   

    我现在是这样处理的,新建了一个字段
    private Thread eventProcessThread = null;
    ,在主程序中不注册事件了,注册事件的语句移到了线程eventProcessThread的处理函数中去。
    private void EventProcessThreadMethod()
    {
    this.Server.ConnectionOvertime += new ConnectionOvertimeDelegate(Server_ConnectionOvertime);
    this.Server.ServerMessageHandler += new ServerMessageHandlerDelegate(Server_MessageHandler);
    }
    然后在
    private void ServerForm_Load(object sender, EventArgs e)
    {
    ……
    eventProcessThread = new Thread(EventProcessThreadMethod);
    eventProcessThread.Start();
    this.Server.Start();
    this.smp = new ServerMessageProcesser(this.Server);//初始化消息处理对象smp,smp负责传输消息事件的具体操作
    ……

    我不知道这样的处理是否规范,或者说这样的处理是否将以前的事件处理全部移到了后台线程里面去处理了呢?还望高手指点
      

  2.   

     public bool isStopThread 
      

  3.   


    应该没有转移事件处理。事件本身的执行流程是在主线程执行到事件触发点时,跳转到你注册的函数执行,再跳转回来。始终是同一线程,与你在哪个线程注册没有关系。建议你研究BackGroundWorker,可以让注册的函数在后台执行,主线程保证有响应。