Ошибка преобразования C # в VB.NET, запрашивается совет - PullRequest
0 голосов
/ 09 октября 2011

Я пытаюсь перевести следующий фрагмент кода C # в VB:

public bool ShowHandlerDialog(string message)
        {
            Message = message;
            Visibility = Visibility.Visible;

            _parent.IsEnabled = false;

            _hideRequest = false;
            while (!_hideRequest)
            {
                // HACK: Stop the thread if the application is about to close
                if (this.Dispatcher.HasShutdownStarted ||
                    this.Dispatcher.HasShutdownFinished)
                {
                    break;
                }

                // HACK: Simulate "DoEvents"
                this.Dispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { }));
                Thread.Sleep(20);
            }

            return _result;
        }

Но перевод выдает ошибку в этой строке:

this.Dispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { }));

Перевод:

Me.Dispatcher.Invoke(DispatcherPriority.Background, New ThreadStart(Function() Do End Function))

Который, кажется, не преобразует правильно бит после New ThreadStart Может кто-нибудь объяснить, что делает "delegate {}" в

new ThreadStart(delegate {}));

а как мне исправить ошибку перевода? Спасибо за любой совет!

1 Ответ

1 голос
/ 09 октября 2011

Эта строка просто запускает новый поток и ожидает его завершения.Код делегата {} - это просто анонимный / встроенный метод (я не думаю, что он поддерживается в VB.NET);как если бы вы указывали на пустой метод в принципе.Например, в c # обработчики событий могут быть связаны с анонимными (встроенными) методами делегатов следующим образом:

this.OnClick += (EventHandler)delegate(object sender, EventArgs ea) {
    MessageBox.Show("Click!");
};

В приведенном выше комментарии говорится [// HACK: имитировать "DoEvents"].Просто замените две строки DoEvents для VB.NET, и вы должны быть установлены.Это позволяет другим потокам выполнять свою работу, прежде чем продолжить, что повышает скорость отклика.

Надеюсь, это поможет!

...