public void StartEventLoop(CancellationToken token = default) { if (isLooping) { return; } isLooping = true; _loopTokenSource?.Dispose(); _loopTokenSource = CancellationTokenSource.CreateLinkedTokenSource(token, _internalSource.Token); var loopToken = _loopTokenSource.Token; loopTask = Task.Run(() => { while (isLooping) { if (EWaiter.WaitForEvent(loopToken)) { try { var returned = EQueue.StartEvent(); AppendAwaitCompletion(returned.CommandTask); } //TODO: DO SOMETHING WITH THIS! catch { } } } }); }