public async Task StopAsync()
{
_stopped = true;
try
{
_stopEvent.Set();
ScriptHost[] instances = GetLiveInstancesAndClear();
Task[] tasksStop = Array.ConvertAll(instances, p => StopAndDisposeAsync(p));
await Task.WhenAll(tasksStop);
State = ScriptHostState.Default;
}
catch
{
// best effort
}
}