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