gpt4 book ai didi

c# - 在没有 Application.Idle 的情况下检测 C# Windows 窗体应用程序中的空闲时间

转载 作者:可可西里 更新时间:2023-11-01 10:01:48 27 4
gpt4 key购买 nike

我有一个奇怪的问题,我不太确定如何修复或解决。我正在编写一个迷你文本编辑器样式的应用程序 - RichTextBox 编辑器。

我需要在选择更改后进行一些复杂的解析 - 更新位置、选择文本和有关该区域周围文本上下文的各种其他位。

因为它需要一些处理,所以我不希望它在用户使用箭头键滚动时每次选择更改时触发。我想过使用 Application.Idle,但它触发得太频繁了。我尝试了一个计时器,但它可能会在选择箭头仍在移动时触发。

我想到的是一种倒计时计时器类型的实用程序,它会在每次触发 RichTextBox SelectionChanged 事件时重置计时器,然后当计时器达到 500 毫秒或 1000 毫秒时,它将执行复杂的处理运行。

这听起来是个好主意吗?

最佳答案

如果花费的时间太长,您应该在自己的线程 中开始处理。一旦您获得新的输入,您就可以停止之前的计算并重新开始使用新信息(因此请考虑为您的线程使用取消机制)。

当你的线程完成后,你必须检查它的结果是否有效(同时选择没有改变)。最后,您可以将计算结果“同步”到 GUI,希望它足够快:)

只有当有一定数量的计算可以在不写入 GUI 的情况下完成时,这才有效......我不确定你是否可以通过这种方式实现它。这取决于您的计算类型。

关于c# - 在没有 Application.Idle 的情况下检测 C# Windows 窗体应用程序中的空闲时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3014068/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com