#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, который вы передали в вызов, будет соответствующим образом изменен.