public override void QueueTask(JsTask task) { newTaskEvent.Reset(); lock (tasks) _ = tasks.AddLast(task); newTaskEvent.Set(); }
private void ExecutionThread() { bool shouldStayAlive = true; JsTask currentlyExecuting = null; while (shouldStayAlive) { if (currentlyExecuting == null) { lock (tasks) { currentlyExecuting = FirstToExecute(); } } if (currentlyExecuting != null) { currentlyExecuting.Run(); currentlyExecuting = null; } else { lock (aliveLock) shouldStayAlive = alive; if (shouldStayAlive) { newTaskEvent.WaitOne(); } } } }
public JsTaskAwaiter(JsTask task) { _task = task; }
public abstract void QueueTask(JsTask task);