private void SendNextInternal()
{
try
{
PackageQueue.RemoveAt(0);
WritePackageQueue();
}
finally
// preventing an exception not signaling the WaitHandle
{
InternalWaitHandle.Set(); // open the door (signals the wait handle)
}
SendFirstInternal();
}