如何在 VB.Net 中处理 F# 事件



我正在按照Don Syme建议的方法在这里引发一个事件并在GUI中处理它。我已按如下方式创建了我的活动

let progressReport = new Event<int>()

并已将其暴露如下

[<CLIEvent>]
member this.ReportProgress  = progressReport.Publish

在我的 VB.net 代码中,我可以看到事件,甚至可以响应它。但是,只有忽略 int 参数,我才能响应它。我的代码有效

Private Sub test() Handles calcAgent.ReportProgress
    prog.Value += 1
End Sub

如果我尝试将其更改为

Private Sub test(i As int) Handles calcAgent.ReportProgress
    prog.Value += 1
End Sub

它不会编译并给出"方法'测试'无法处理'报告进度'的原因,因为它们没有兼容的签名。

类型FSharp.Control.FSharpHandler<'T>的签名为 sender:obj * args:'T -> unit ,这意味着附加到它的委托必须有两个参数 - sender:objargs:'T

在您的情况下,'Tint,因此您的处理程序应该是:

Private Sub test(sender As Object, i As int) Handles calcAgent.ReportProgress
    prog.Value += 1
End Sub

相关内容

  • 没有找到相关文章

最新更新