【发布时间】:2021-05-03 17:31:20
【问题描述】:
我有一个带有 MouseWheel 事件的 WPF 应用程序。本次活动的操作相当繁重。因此,我只想在用户停止滚动时执行此事件(即:如果他在给定的时间内没有滚动)。
在 JS 中,这很容易,我可以将 setTimout 放在一个 var 中,然后如果在执行 setTimeout 之前发生另一个滚动,则在该 var 上执行 clearTimeout(这对于例如自动完成)。
如何在c# 中实现这一点?
【问题讨论】:
-
在事件发生时停止并重新启动 DispatcherTimer。在计时器的 Tick 处理程序上执行最终事件操作。
-
为此使用的搜索词是“去抖动”。例如,weblog.west-wind.com/posts/2017/jul/02/… 或 docs.microsoft.com/en-us/dotnet/api/…
-
你为什么用“多线程”标签标记问题?您想在与 UI 线程不同的线程上执行繁重的操作吗?
-
@Clemens,太好了,谢谢,您可以添加您的评论作为回复,以便我接受吗?
-
@TheodorZoulias,不,只是因为与计时器相关的操作通常绑定到一个新线程...
标签: c# wpf multithreading settimeout