} // InitializeSocketTimeoutHandler
private static void TimeoutSockets(Object state, Boolean wasSignalled)
{
DateTime currentTime = DateTime.UtcNow;
lock (_connections)
{
foreach (DictionaryEntry entry in _connections)
{
RemoteConnection connection = (RemoteConnection)entry.Value;
connection.TimeoutSockets(currentTime);
}
}
_registeredWaitHandle.Unregister(null);
_registeredWaitHandle =
ThreadPool.UnsafeRegisterWaitForSingleObject(
_socketTimeoutWaitHandle,
_socketTimeoutDelegate,
"TcpChannelSocketTimeout",
_socketTimeoutPollTime,
true); // execute only once
} // TimeoutSockets