我有一个控件,允许用户在图像的特定部分执行一些重型图像处理,他们有箭头按钮在图像周围移动这个区域.
因为这个过程是非常繁重的(每次运行平均800毫秒)我使用了一个重复按钮,将其转换为“Ghost”并且仅在鼠标按下事件时执行该过程.
然而
某些用户拒绝学习这种握持和释放的方法,并坚持点击按钮移动它而不是保持和释放.
这意味着每次敲击时都会调用重载方法,并且每次方法触发时它只会移动一个小的增量,因此它们在尝试执行时会导致应用程序挂起.这800ms进程中有100个
我的问题
如何以与保持和释放相同的方式处理这种敲击行为?
我想过一个计时器,但无法弄清楚我如何检测正常点击和最后一个点击之间的区别.
解决方法
考虑监控鼠标活动并在短时间不活动后开始重型过程.
考虑在单独的线程上运行该进程 – 这可能意味着在内存中克隆(部分)映像.
考虑阻止进程多次同时运行(如果可能的话,即进程是异步的).