首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止多次重复执行事件

防止多次重复执行事件
EN

Stack Overflow用户
提问于 2018-07-18 11:50:06
回答 1查看 174关注 0票数 0

我有一个Wacom Epad。最初,我在类构造函数上订阅onPenData事件,并在设备断开时取消订阅。

当用户在Wacom屏幕上多次单击时,它会触发我所订阅的onPenData事件。

代码语言:javascript
复制
private void onPenData(wgssSTU.IPenData penData) // Process incoming pen data
{
     // Do some stuff
} 

因此,我要做的是实现某种机制,以避免在重复单击时执行onPenData。

我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-18 12:56:00

不能阻止事件处理程序触发,但可以管理事件处理逻辑执行。

假设有事件处理程序onPenDataOnPenDataBusinessLogic方法:

代码语言:javascript
复制
private void onPenData(wgssSTU.IPenData penData) // Process incoming pen data
{
    OnPenDataBusinessLogic(penData);
} 

private void OnPenDataBusinessLogic(wgssSTU.IPenData penData)
{
     // Do some stuff
}

现在,您有了许多选项:

1) bool标志。最简单的一个:

代码语言:javascript
复制
private bool onPenDataRunning;

private void onPenData(wgssSTU.IPenData penData) // Process incoming pen data    
{
    if (onPenDataRunning)
    {
        return;
    }

    onPenDataRunning = true;
    try
    {
        OnPenDataBusinessLogic(penData);
    }
    finally
    {
        onPenDataRunning = false;
    }
} 

2) OnPenDataBusinessLogic延迟执行。每次onPenData开火,(重新)启动一个计时器。经过计时器后,调用OnPenDataBusinessLogic

3)笔数据缓冲。在onPenData中缓冲数据,在后台线程/任务中通过OnPenDataBusinessLogic处理笔数据。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51401297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档