【问题标题】:How to use DispatcherOperationCallback in vb.net如何在 vb.net 中使用 DispatcherOperationCallback
【发布时间】:2023-03-27 12:29:02
【问题描述】:

我在使用 DispatcherOperationCallback 将 c# 转换为 vb.net 时遇到问题。

我已经尝试根据help to convert c# anonymous to vb.net进行转换

我正在使用 VS2010。

我有一个这样的 c# 代码:

    public void Callback(Contract contract)
    {
        Dispatcher.BeginInvoke(DispatcherPriority.Normal,
              (DispatcherOperationCallback)delegate(object arg)
              {
                  Contract obj = (Contract)arg;
                  txtRequest.Text = HandleArgument(obj);                      
                  return null;
              }, contract);
    }

在我尝试像这样更改为 vb.net 之后

Public Sub Callback(ByVal contract As Contract) Implements IServiceCallback.Callback

    Dispatcher.BeginInvoke(New DispatcherOperationCallback(Sub(arg As Object)
                                                           txtRequest.Text = HandleArgument(DirectCast(arg, Contract))
                                                           End Sub), DispatcherPriority.Normal, contract)

End Sub

但它不起作用。 vs2010显示“嵌套子没有与委托兼容的签名”Delegate Function DispatcherOperationCallback(arg As Object) As Object”

感谢您的帮助。

【问题讨论】:

    标签: c# wpf vb.net xbap


    【解决方案1】:

    只需阅读错误信息:

    nested sub does not have a signature that is compatible with delegate 
      "Delegate Function DispatcherOperationCallback(arg As Object) As Object
    

    所以,你应该相应地改变你的代码。

    Public Sub Callback(ByVal contract As Contract) Implements IServiceCallback.Callback
        Dispatcher.BeginInvoke(
          New DispatcherOperationCallback(
              Function(arg As Object)
                  txtRequest.Text = HandleArgument(DirectCast(arg, Contract))
                  Return Nothing ' // you need to check what should be returned here '
              End Function), 
             DispatcherPriority.Normal, 
             contract)
    End Sub
    

    【讨论】:

    • 其实我什么都不需要返回。我只想将 arg 传递给 HandleArgument 函数以执行某些任务并将字符串返回给名为 txtRequest 的 TextBox。就是这样。
    • 这可能是真的,但DispatcherOperationCallback 需要一个函数,而不是一个方法。
    猜你喜欢
    • 2014-01-31
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多