protected override void OnStop()
{
var shutdownTask = startTask.ContinueWith(task =>
{
if (server != null)
{
server.Dispose();
}
return(task);
});
var keepAliveTask = Task.Factory.StartNew(() =>
{
if (shutdownTask.Wait(9000))
{
return;
}
do
{
RequestAdditionalTime(10000);
} while (!shutdownTask.Wait(9000));
});
Task.WaitAll(shutdownTask, keepAliveTask);
}