public void ChangeList(IEnumerable<LineInfo> newLineList)
{
if (InvokeRequired)
{
BeginInvoke((Action<MainForm, IEnumerable<LineInfo>>)((t, e1) => t.ChangeList(e1)), this, newLineList);
return;
}
}
答案 0 :(得分:3)
Public Sub ChangeList(ByVal newLineList As IEnumerable(Of LineInfo))
If InvokeRequired Then
BeginInvoke( DirectCast( (Sub(t, e1) t.ChangeList(e1)), (Action(Of MainForm, IEnumerable(Of LineInfo)) ) ), Me, newLineList)
Exit Sub
End If
End Sub
我在没有编译器的情况下做到了这一点,因此在某个地方的BeginInvoke调用中可能会有一个错误放置的括号,但是否则它应该是正确的。
其他人正在使用的Telerik转换器缺少newLineList参数的泛型类型,并尝试使用Function lambda(期望返回值)而不是Sub lambda(不需要返回值)。
答案 1 :(得分:1)
Public Sub ChangeList(newLineList As IEnumerable(Of LineInfo))
If InvokeRequired Then
BeginInvoke(DirectCast(Function(t, e1) t.ChangeList(e1), Action(Of MainForm, IEnumerable(Of LineInfo))), Me, newLineList)
Return
End If
End Sub
That is not the only converter available,有another one here
修改强>
您可以通过将其更改为函数来解决编译器警告:
Public Function ChangeList(newLineList As IEnumerable(Of LineInfo))
If InvokeRequired Then
BeginInvoke(DirectCast(Function(t, e1) t.ChangeList(e1), Action(Of MainForm, IEnumerable(Of LineInfo))), Me, newLineList)
End If
End Function
我现在收到警告,它不会在所有路径上返回值,并且如果您尝试使用结果,则可能会获得空引用异常。只要你没有,你应该没事。
您可以通过明确返回任何内容来删除警告:
Public Function ChangeList(newLineList As IEnumerable(Of LineInfo))
If InvokeRequired Then
BeginInvoke(DirectCast(Function(t, e1) t.ChangeList(e1), Action(Of MainForm, IEnumerable(Of LineInfo))), Me, newLineList)
End If
Return Nothing
End Function
虽然这是未经测试的,但可以帮助你
答案 2 :(得分:0)
您是否在线尝试过c#to vb转换器? c# to VB converter
Public Sub ChangeList(newLineList As IEnumerable)
If InvokeRequired Then
BeginInvoke(DirectCast(Function(t, e1) t.ChangeList(e1), Action(Of MainForm, IEnumerable(Of LineInfo))), Me, newLineList)
Return
End If
End Sub
答案 3 :(得分:0)
Public Sub ChangeList(newLineList As IEnumerable)
If InvokeRequired Then
BeginInvoke(DirectCast(Function(t, e1) t.ChangeList(e1), Action(Of MainForm, IEnumerable(Of LineInfo))), Me, newLineList)
Return
End If
End Sub
你可能想要编辑你的问题并使用它 http://www.developerfusion.com/tools/convert/csharp-to-vb/