Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在没有应用程序的C#Windows窗体应用程序中检测空闲时间。空闲_C#_Windows_Winforms_Timer_Idle Processing - Fatal编程技术网

在没有应用程序的C#Windows窗体应用程序中检测空闲时间。空闲

在没有应用程序的C#Windows窗体应用程序中检测空闲时间。空闲,c#,windows,winforms,timer,idle-processing,C#,Windows,Winforms,Timer,Idle Processing,我有一个奇怪的问题,我不太确定如何解决。我正在编写一个迷你文本编辑器风格的应用程序-RichTextBox编辑器 在选择更改之后,我需要进行一些复杂的解析——更新位置、选择文本和区域周围文本上下文的各种其他位 由于它需要一点处理,我不希望在用户使用箭头键滚动时,每次选择更改时都触发它。我曾想过使用这个应用程序。空闲,但它启动得太频繁了。我尝试了计时器,但它可能会在选择箭头仍在移动时触发 我想到的是一个倒计时计时器类实用程序,它将在每次触发RichTextBox SelectionChanged事

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

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

由于它需要一点处理,我不希望在用户使用箭头键滚动时,每次选择更改时都触发它。我曾想过使用这个应用程序。空闲,但它启动得太频繁了。我尝试了计时器,但它可能会在选择箭头仍在移动时触发

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


这听起来是个好主意吗?

如果处理时间过长,您可能应该在自己的线程中开始处理。一旦你得到新的输入,你就可以停止先前的计算,并重新开始新的信息(因此考虑一个取消机制为你的线程)。 当你的线程完成后,你必须检查它的结果是否有效(选择在此期间没有改变)。最后,您可以将计算结果“同步”到GUI,希望这足够快:)


这只在有一定数量的计算可以不用写入GUI就可以完成时才起作用。。。我不确定你是否能以这种方式实施它。这取决于您的计算类型。

您必须何时进行此处理?当选择某个对象时,或者甚至当光标位置仅发生更改时(SelectionLength==0)?不,在该线程中没有任何有用的操作。它无法访问RTB的任何属性。@Hans。。。这就是为什么我写这取决于计算的类型。。。可以在线程中执行拼写检查。。。当然,给错误的单词上色必须在外面进行