簡體   English   中英

Clipboard.SetText調用延遲5秒

[英]5 seconds delay of Clipboard.SetText call

我有來自舊系統的簡單調用,非常簡單的.NET win應用程序調用

Clipboard.SetText("small data portion") 

此通話持續5秒鍾。 接下來的SetText調用工作正常。

最重要的(IMHO)呼叫者代碼(VB6):

SAAttr.nLength = Len(MySAAttr)
SAAttr.bInheritHandle = 1
SAAttr.lpSecurityDescriptor = 0

CreatePipe StdOutR, StdOutW, SAAttr, 0&
SetHandleInformation StdOutR, HANDLE_FLAG_INHERIT, 0&
CreatePipe StdInR, StdInW, SAAttr, 0&
SetHandleInformation StdInW, HANDLE_FLAG_INHERIT, 0&

start.cb = Len(start)
start.hStdOutput = StdOutW
start.hStdError = StdOutW
start.hStdInput = StdInR
start.dwFlags = STARTF_USESTDHANDLES
ret = CreateProcess(0&, cmdline, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS + _    
      CREATE_NO_WINDOW, 0&, 0&, start, proc)

ret = WaitForSingleObject(proc.hProcess, pTimeout)
CloseHandle StdOutW

2個問題:

  • 剪貼板延遲的原因是什么?

  • 如何解決(但呼叫過程必須被阻止-來自非阻止呼叫的呼叫工作正常)?

示例代碼:

Dim start1 As DateTime = Now
Clipboard.SetText("simple data")
Dim start2 As DateTime = Now
Clipboard.SetText("simple data")
Dim start3 As DateTime = Now
Clipboard.SetText("simple data")
MessageBox.Show( (start2 - start1).ToString() & vbCrLf & _
   (start3 - start2).ToString() & vbCrLf & _
   (Now - start3).ToString() & vbCrLf )

結果:

00:00:05.0130000

00:00:00

00:00:00

多年來,當Ouutlook和/或Word運行時使用剪貼板將數據傳輸到Excel時,我在VB6上遇到了相同的問題。

問題出在Office上。 您需要禁用將多個項目復制到剪貼板或從剪貼板復制項目以加快復制速度。

https://support.microsoft.com/zh-cn/help/2817672/macro-takes-longer-than-expected-to-execute-many-individual-copy-and-p

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM