public static void EnsureSocketsAreInitialized() { if (!Volatile.Read(ref s_initialized)) { lock (s_initializedLock) { if (!s_initialized) { Interop.Winsock.WSAData wsaData = new Interop.Winsock.WSAData(); SocketError errorCode = Interop.Winsock.WSAStartup( (short)0x0202, // we need 2.2 out wsaData); if (errorCode != SocketError.Success) { // // failed to initialize, throw // // WSAStartup does not set LastWin32Error throw new SocketException((int)errorCode); } s_getAddrInfoExSupported = GetAddrInfoExSupportsOverlapped(); Volatile.Write(ref s_initialized, true); } } } }
public static void EnsureSocketsAreInitialized() { if (!Volatile.Read(ref s_initialized)) { lock (s_initializedLock) { if (!s_initialized) { Interop.Winsock.WSAData wsaData = new Interop.Winsock.WSAData(); SocketError errorCode = Interop.Winsock.WSAStartup( (short)0x0202, // we need 2.2 out wsaData); if (errorCode != SocketError.Success) { // // failed to initialize, throw // // WSAStartup does not set LastWin32Error throw new SocketException((int)errorCode); } Volatile.Write(ref s_initialized, true); } } } }