C # лямбда в VB.Net - PullRequest
       13

C # лямбда в VB.Net

2 голосов
/ 12 августа 2010

Я пытаюсь преобразовать функцию из C # в VB.Net 2008 и не могу заставить работать лямбда-выражения. Код взят с аккуратного небольшого SMTP-сервера C # , который сохраняет электронные письма в хранилище BLOB-объектов Azure

Любая помощь будет принята с благодарностью.

    public void Run()
    {
        var mutex = new ManualResetEvent(false);
        while (true)
        {
            mutex.Reset();
            listener.BeginAcceptSocket((ar) =>
                {
                    mutex.Set();
                    processor.ProcessConnection(listener.EndAcceptSocket(ar));
                }, null);
            mutex.WaitOne();
        }
    }

Ответы [ 3 ]

1 голос
/ 12 августа 2010

Мне удалось правильно преобразовать его для VB 2008, используя InstantVB от Tangible Software

Public Sub Run()
    Dim mutex = New ManualResetEvent(False)
    Do
        mutex.Reset()
        listener.BeginAcceptSocket(Function(ar) AnonymousMethod1(ar, mutex), Nothing)
        mutex.WaitOne()
    Loop
End Sub

Private Function AnonymousMethod1(ByVal ar As Object, ByVal mutex As ManualResetEvent) As Object
    mutex.Set()
    processor.ProcessConnection(listener.EndAcceptSocket(ar))
    Return Nothing
End Function
1 голос
/ 12 августа 2010

Лямбда - это просто сокращение для анонимного делегата.

поэтому замените

(ar)=> {//Do Stuff}

с

Sub(ar)
 'Do stuff
End Sub
0 голосов
/ 12 августа 2010

Я предполагаю, что вы используете Visual Studio 2008, и в этом случае вы не можете писать многострочные лямбда-выражения в VS2008.

Вам придется использовать VS2010, в противном случае вам придется использовать ответ Энтони .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...