Credo di aver risolto.
In pratica io ho un thread apposito per accettare le connessioni SMTP e POP3. Quando arriva una connessione il thread termina e ne riparte un altro per accettare una nuova connessione. Il problema stava nel fatto che quando facevo la WaitForSingleObject e questa ritornava, oltre a chiudere l'handle del thread chiudevo anche il socket! Per questo motivo il suo valore veniva invalidato e di qui l'errore. Ora sembra non farlo più.![]()