我在使用 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)兼容的签名”Delegate Function DispatcherOperationCallback(arg As Object) As Object“
感谢您的帮助。
最佳答案
只需阅读错误信息:
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
关于c# - 如何在 vb.net 中使用 DispatcherOperationCallback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5448405/