You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将方法作为参数传递给另一方法时出现BC32008/BC30577错误的原因及修复方案

错误原因与修复方案

尝试1的错误原因

错误BC32008的本质是:ThreadStart委托的构造函数要求必须传入**AddressOf表达式或lambda表达式**作为唯一参数。你直接传递了Action类型的变量Method,VB.NET语法不允许将Action实例隐式转换为ThreadStart委托,必须显式指定执行逻辑的包装方式。

尝试2的错误原因

错误BC30577的问题在于:AddressOf操作符的操作数必须是实际的方法名称(不能带括号),而你把Action类型的变量Method当作方法名传给AddressOf——Method是一个委托实例变量,不是方法标识符,AddressOf无法对其进行解析。

修复方案

核心思路是用lambda表达式包装Action的执行逻辑,使其符合ThreadStart委托的要求。修改后的代码有两种写法:

写法一(显式调用Invoke)

Public Sub NewThread(Method As Action)
    Me.TaskThread = New Thread(Sub() Method.Invoke())
End Sub

写法二(简化调用)

Public Sub NewThread(Method As Action)
    Me.TaskThread = New Thread(Sub() Method())
End Sub

两种写法的原理一致:lambda表达式Sub() Method()会被隐式转换为ThreadStart委托,其逻辑就是执行传入的Action实例,完全满足线程启动的需求。

内容的提问来源于stack exchange,提问作者Ville

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 02:40:32