Проблема с сокетом SilverLight

#c# #silverlight #sockets

#c# #silverlight #сокеты

Вопрос:

Я пытаюсь написать приложение silverlight, сокет может подключаться к 127.0.0.1: 4505, но событие arg.completed не работает

 arg.RemoteEndPoint = new IPEndPoint(IPAddress.Loopback, 4505);
            arg.UserToken = sck;
            arg.Completed  = new EventHandler<SocketAsyncEventArgs>(arg_Completed);
            sck.ConnectAsync(arg);

void arg_Completed(object sender, SocketAsyncEventArgs e)
        {
            label1.Content = "Durum!";
            if (e.LastOperation == SocketAsyncOperation.Connect)
            {
                label1.Content = "Bağlandı!";
            }          
        }
  

Ответ №1:

Рассматривали ли вы, что ConnectAsync , возможно, не выполняется асинхронно. Ознакомьтесь с его документацией здесь.

Вы должны проверять возвращаемое логическое значение из ConnectAsync , если оно true есть, то сработает завершенное событие, если нет, то операция завершится синхронно и ConnectAsync не сработает. Тот факт, что вы используете локальный 127.0.0.01, увеличивает вероятность синхронного завершения.

При синхронном соединении объект args, который вы передали в вызов, будет соответствующим образом изменен.