【问题标题】:Implementing 2 EventHandlers at a time一次实现 2 个 EventHandler
【发布时间】:2013-08-29 08:27:12
【问题描述】:

与此主题相关: How to parallelize event handler execution in C#

我正在开发 winforms 中的代码编辑器,我同时使用 keyup 和 mousemove 来实现不同的方法。

问题是每次我的 mousemove 事件处理程序处于活动状态时,keyup 不起作用或相互冲突。

我正在处理工具提示,但功能分开。

对于mousemove功能,每次我将指定的关键字悬停在richtextbox上时,都会出现工具提示。

在keyup中,每次我输入一个关键字+“(”工具提示都会出现。

所以我的问题是如何修复两个事件处理程序并使其一次启用,使用 system.threading 或并行。

使用的事件:

 private void rtb_CS_MouseMove(object sender, MouseEventArgs e){}    
 private void rtb_CS_KeyUp(object sender, MouseEventArgs e){}

【问题讨论】:

    标签: c# multithreading winforms parallel-processing


    【解决方案1】:

    首先我想说的是,如果您希望我们找到代码中的冲突,您应该分享您的代码。其次,您需要扩展对您的应用程序中出了什么问题的解释。我不知道是什么问题,什么时候出现。你是什​​么意思“mousemove 事件处理程序已启用”?等等。

    现在,对于答案本身。它仅基于您写的内容,所以如果您提供更多信息,我可能会删除它:

    当处理多个事件时,您的句柄可能需要多个滴答声,那么您应该创建一个线程来处理该事件:

    private void rtb_CS_MouseMove(object sender, MouseEventArgs e)
    {
       Thread trd = new Thread(new ParameterizedThreadStart(HandleMouseMove));
       trd.Start(e);
    }  
    
    private static void HandleMouseMove(object obj)
    {
         // your handle
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-08
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 2016-02-07
      相关资源
      最近更新 更多