public bool TryComplete()
{
if (completed)
{
return true;
}
if (HasExpired)
{
return false;
}
this.completed = true;
return true;
}