我为文档中的选定文本提供了翻译功能。翻译花费了几秒钟,因为它使用了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函数?
谢谢!