Błąd gniazda C # 10022

Mam błąd 10022 w aplikacji używającej gniazd w C # .NET3.5.

W moim kodzie łączę gniazdo z lokalnym adresem IP. Kiedy już go nie potrzebuję, odłączam go (reader.socket.Disconnect (true);) z „true”, aby móc go ponownie użyć.

Ale kiedy ponownie wywołam metodę „bind”, zawiesza się z błędem 10022 (niepoprawny argument).

Jeśli ustawię linię za pomocą tej metody jako komentarza, to zawiesza się w linii „słuchaj”, mówiąc, że połączenie jest już ustawione (chociaż nazwałem rozłączanie!)

Dowolny pomysł?

Dzięki

Oto część kodu, która się nie udaje:

public void WaitConnexion(IPEndPoint localEP)
        {
            if (localEP.Port != 9000)
            {
                MessageBox.Show("Le port doit être 9000");
                return;
            }
            LocalEndPoint = localEP;

            if (reader.socket.Connected)
            {
                MessageBox.Show("Vous êtes déjà connecté", "Conflit de connexion", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }

            // on bind le socket avec le endpoint local, et on le met en attente de connexion asynchrone

          //  reader.socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


            reader.socket.Bind(localEP);

            reader.socket.Listen(1);

            reader.socket.BeginAccept(new AsyncCallback(WaitConnexionCallBack), reader.socket);
        }

a oto metoda diconnect z jej wywołaniem zwrotnym:

 public void Disconnect()
        {
            if (!reader.socket.Connected)
                return;


            reader.socket.BeginDisconnect(true, new AsyncCallback(DisconnectCallBack), reader.socket);


        }

       private void DisconnectCallBack(IAsyncResult result)
        {
            reader.socket = (result.AsyncState as Socket);
            reader.socket.EndDisconnect(result);


            if (Disconnected != null)
                Disconnected(this, EventArgs.Empty);



        }

questionAnswers(1)

yourAnswerToTheQuestion