Mam taki problem:
Mam program w którym używam metody BeginReceive i jej callbacku, nazwanego przeze mnie OnReceive.
W tym callbacku jest switch, który na podstawie pierwszego bajtu odebranych danych wykonuje rózne operacje, ale wczesnie zgłasza event, który odnotowuje odebranie danych w okienku. Problem jest taki, że nadejście jednego pakietu odnotowywane jest kilka/kilkanaście razy. Tak jakby po odebraniu tego jednego pakietu fukncja "kręciła się"
metoda OnReceive wygląda tak:
private void OnReceived(IAsyncResult ar)
{
;
Socket s = (Socket)ar.AsyncState;
int read = s.EndReceive(ar);
this.OdebranoPakiet(socket, new OdebranoPakietEventArgs(buffer));
switch (buffer[0])
{
//obrabianie pakietu
}
s.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(OnReceived),s);
}
co zrobic, żeby ta funkcja mi się nie kręciła? Wczesniej używałem takiej i nie było jakos problemu