Ho un software che è sempre andato bene, ultimamente mi sono accorto che venivano loggati alcuni errori mentre si cercava di stabilire una comunicazione con le soket, andando a vedere i log ho visto che l'errore era il 10035 o WSAEWOULDBLOCK . Questo errore si verifica per socket non bloccanti, ma nel mio caso il valore della proprietà Blocking era pari a true. Dopo 10 min di ricerca mi imbatto in questo post. Leggendo vedo un moderatore che consiglia di fare questo workaround
As a temporary workaround you may want to explicitly set the Blocking property to true right before you call receive.
client.Blocking = true;
client.Receive(buffer);
Effettivamente cosi l'errore non si verifica più, ma mi rimane comunque un senso di incertezza, perché questo significa che probabilmente la WinSock sottostante in alcuni casi perde lo stato di blocking, stato che deve essere reimpostato dall'esterno. (Disassemblando si può facilmente vedere come il setter della proprietà Blocking invi un comando di I/O alla Winsock), chiaramente reimpostandolo prima di ogni lettura il problema non si pone. Qualcun altro è mai incappato in questa situazione?
Alk.