在SelectionChanged事件

时间:2018-01-08 09:32:03

标签: .net vb.net asynchronous

我为文档中的选定文本提供了翻译功能。翻译花费了几秒钟,因为它使用了Web服务。这很好。我用这个选择改变了事件。

Private Sub recDescrieri_SelectionChanged(sender As Object, e As EventArgs) Handles recDescrieri.SelectionChanged
        Dim selection As DocumentRange = recDescrieri.Document.Selection
        'Dim selectedText As String = recDescrieri.Document.GetText(selection)
        If selection.Length = 0 Then
            Exit Sub
        End If

        TRANSLATE_TEXT
End Sub

问题在于,当我在recDescrieri文档中选择文本时,会触发事件4-5次。因为TRANSLATE_TEXT大约需要1-2秒,所以在显示翻译文本之前会有很长的延迟。实际上,选择变化非常快并触发事件。

我只需要翻译最终选定的文本,而不是中间阶段。 我想我必须使用

Await Task.Delay 

在新事件发生时取消前期阶段,因为前阶段之间的时间少于500毫秒。

如何使用Await Task.Delay来取消中间阶段,不允许它们调用translate函数,并且只允许在最后选择阶段调用translate函数?

谢谢!

0 个答案:

没有答案