Vb.net 后台工作人员不';我不喜欢剪贴板
完整代码示例:Vb.net 后台工作人员不';我不喜欢剪贴板,vb.net,visual-studio-2008,.net-3.5,backgroundworker,clipboard,Vb.net,Visual Studio 2008,.net 3.5,Backgroundworker,Clipboard,完整代码示例: Private Sub test() Clipboard.SetDataObject("test") '<- gives error End Sub Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork test
Private Sub test()
Clipboard.SetDataObject("test") '<- gives error
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
test()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
BackgroundWorker1.RunWorkerAsync()
End Sub
我试过使用
BeginInvoke(New Action(Function() Clipboard.SetDataObject(strText.ToString)))
而不是
Clipboard.SetDataObject(strText.ToString)))
但是,如果收到一条消息,说明表达式不会产生on值。在要制作副本的部分中,请尝试:
Private Thr As Threading.Thread
Thr = New Threading.Thread(New Threading.ThreadStart(AddressOf NewThread))
Thr.SetApartmentState(ApartmentState.STA)
Thr.Start()
并定义:
Private Sub NewThread()
Try
Clipboard.SetDataObject(strText.ToString)
Catch ex As Exception
' Log exception
End Try
End Sub
将
private void NewThread()
转换为vb.net不是问题,但是,我看不到如何转换第一部分Thread NewThread=new Thread(NewThread)代码>只需删除“.Dispatcher”即可使用表单的BeginInvoke方法。@HansPassant,它修复了Dispatcher
错误,但现在剪贴板给我一个错误,说表达式不生成值。
Private Sub NewThread()
Try
Clipboard.SetDataObject(strText.ToString)
Catch ex As Exception
' Log exception
End Try
End Sub