/// <summary>
/// Returns the WaiterEntry of the current thread
/// </summary>
/// <returns></returns>
/// In order to avoid creation and destuction of WaiterEntry
/// objects each thread has its own WaiterEntry object.
private WaiterEntry GetThreadWaiterEntry()
{
if (null == _waiterEntry)
{
_waiterEntry = new WaiterEntry();
}
_waiterEntry.Reset();
return(_waiterEntry);
}