Translation Dispatcher.Invoke委托从C#到VB.NET

时间:2014-03-27 15:43:22

标签: c# vb.net lambda delegates code-translation

您好,想知道是否有人可以将以下代码翻译成vb.net。任何帮助将不胜感激。

void ShowNewPage()
{
    Dispatcher.Invoke((Action)delegate 
    {
        if (contentPresenter.Content != null)
        {
            UserControl oldPage = contentPresenter.Content as UserControl;

            if (oldPage != null)
            {
                oldPage.Loaded -= newPage_Loaded;

                UnloadPage(oldPage);
            }
        }
        else
        {
            ShowNextPage();
        }

    });
}

2 个答案:

答案 0 :(得分:2)

在Google上快速搜索:translate C# to vb.net会让您继续前行;)

但是为了答案,你走吧!

<强>更新:

Private Sub ShowNewPage()
    Dispatcher.Invoke(DirectCast(
                          Sub()
                              If contentPresenter.Content IsNot Nothing Then
                                  Dim oldPage As UserControl = TryCast(contentPresenter.Content, UserControl)

                                  If oldPage IsNot Nothing Then
                                      oldPage.Loaded -= newPage_Loaded
                                      UnloadPage(oldPage)
                                  End If
                              Else
                                  ShowNextPage()
                              End If
                          End Sub, 
                          Action))
End Sub

答案 1 :(得分:1)

在线翻译并不总是有效。他们对linq和lambdas特别不好。

以下是我对翻译的尝试:

Private Sub ShowNewPage()
    Dispatcher.Invoke(Sub() ShowNewPageCallback())
End Sub

Private Sub ShowNewPageCallback()
    If contentPresenter.Content IsNot Nothing Then
        Dim oldPage As UserControl = TryCast(contentPresenter.Content, UserControl)

        If oldPage IsNot Nothing Then
            RemoveHandler oldPage.Loaded, AddressOf newPage_Loaded
            UnloadPage(oldPage)
        End If
    Else
        ShowNextPage()
    End If
End Sub

如果您决定在将来发布此类问题以供日后参考,请提及您已尝试翻译并展示您的翻译。大多数人都希望看到你自己做了一些努力。