Bonjour,

J'ai une application en c# qui ouvre une socket vers un serveur en utilisant la classe TCPClient.
Tout se passe bien de ce côté-là, je peux me connecter et me déconnecter de mon serveur sans problèmes.

Mon application utilise pour une certaine fonction une dll c qui elle aussi ouvre une socket vers le même serveur, en utilisant les API WINSOCK.
Pareil, tout se passe bien, la dll discute tranquillement puis ferme sa socket puis fait appel à WSACleanup.

Mon problème : ce WSACleanup ferme également ma socket préalablement ouverte en c#, ce que je ne comprend pas bien. (Ce n'est évidemment pas le comportement souhaité : mon application c# ne doit pas perdre sa connexion au serveur.)

De ce que j'ai compris de WSACleanup, c'est qu'il nettoie les ressources ouvertes seulement lorsque le nombre d'appels à WSACleanup égale celui de WSAStartup. Or, a priori, j'ai ici un seul appel à WSACleanup pour deux appels à WSAStartup.

L'utilisation de TCPClient en .NET se base-t-il bien sur WINSOCK ? Un WSAStartup est-il appelé au TCPClient.Connect() ?
Comment expliquer ce comportement ?