public ServiceResult Wait(int timeout)
{
try
{
// do not block for an async operation.
if (Operation != null)
{
return StatusCodes.BadWouldBlock;
}
if (!Event.WaitOne(timeout, false))
{
return StatusCodes.BadTimeout;
}
return ServiceResult.Good;
}
catch (Exception e)
{
return ServiceResult.Create(e, StatusCodes.BadTimeout, "Unexpected error waiting for subscription.");
}
finally
{
try
{
Event.Close();
}
catch (Exception)
{
// ignore errors on close.
}
}
}