Заставка WPF с System.Threading.Thread - PullRequest
0 голосов
/ 14 сентября 2018

Следующий код C # и Windows Forms взят из этого видео на YouTube: Учебник по C # - заставка

namespace SplashScreen
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            Thread t = new Thread(new ThreadStart(StartForm));
            t.Start();
            Thread.Sleep(5000);
            InitializeComponent();
            t.Abort();
        }

        public void StartForm()
        {
            Application.Run(new frmSplashScreen());
        }
    }
}

Я хочу преобразовать вышеуказанный кодв код VB.NET и WPF.

Следующий код показывает, что я сделал до сих пор:

Class MainWindow

    Private Sub MainWindow_Loaded( _
      sender As Object, e As RoutedEventArgs) _
      Handles Me.Loaded

        Dim t As System.Threading.Thread = _
          New System.Threading.Thread( _
            New System.Threading.ThreadStart(StartForm))
        t.Start()
        System.Threading.Thread.Sleep(5000)
        t.Abort()
    End Sub

    Public Sub StartForm()
        Dim mySplashScreenWindow As New SplashScreenWindow()
        mySplashScreenWindow.Owner = Me
        mySplashScreenWindow.ShowDialog()
    End Sub

End Class

Для делегата System.Threading.ThreadStart требуется AddressOfвыражение или лямбда-выражение в качестве единственного аргумента своего конструктора.

Итак, как я могу решить эту ошибку?

1 Ответ

0 голосов
/ 14 сентября 2018

Если вы проверяете документацию MSDN , из пункта 2 видно, что:

Создайте экземпляр потока с соответствующим делегатом для начальной точки потока.Используйте оператор AddressOf для создания делегата в Visual Basic

, который объясняет полученную ошибку:

Delegate 'System.Threading.ThreadStart'требуется выражение' AddressOf 'или лямбда-выражение в качестве единственного аргумента для его конструктора.

В вашем коде оно отсутствует, поэтому вам следует добавить его перед функцией StartForm вконструктор, такой как:

Dim t As System.Threading.Thread = New System.Threading.Thread(AddressOf StartForm))
t.Start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...