使用ThreadPool.QueueUserWorkitem生成线程时不兼容的签名

时间:2009-05-05 15:00:58

标签: vb.net multithreading threadpool

错误是:

  

方法'Private Sub ProcessToolWork()'   没有签名兼容   与代表'代表子   WaitCallback(状态为对象)'。

这是什么交易?我从未经历过以这种方式产生线程的错误。

以下是我的例行定义:

Public Sub ProcessWork()
      ThreadPool.QueueUserWorkItem(AddressOf ProcessToolWork)
End Sub

Private Sub ProcessToolWork()

End Sub

看错了什么?

我也尝试为这个项目制作一个新的WaitCallback:

ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf ProcessToolWork))

2 个答案:

答案 0 :(得分:3)

WaitCallback采用state参数(类型为Object)。即使你忽略它,你也必须把它放在你的方法签名中:

Private Sub ProcessToolWork(ByVal ignored As Object)

End Sub

答案 1 :(得分:0)

我自己也遇到过同样的事情。在进行“最终”编译之前,我将Option Strict设置为“on”,并出现此错误。

注意:这是Option Strict,而不是Option Explicit。

因此,如果您尝试使用Option Strict进行编译,则只需要提供“Byval ignored As Object”参数。