void CompletingTasks() { taskDelegate task = null; while (true) { if (TaskDelegateQueue.Count > 0) { lock (TaskDelegateQueue) { if (TaskDelegateQueue.Count > 0) { task = TaskDelegateQueue.Dequeue(); } } Console.WriteLine("{0} start task", Thread.CurrentThread.Name); task.Invoke(); Console.WriteLine("{0} complete task", Thread.CurrentThread.Name); } //Skip processor cycles until we have a task for it; SpinWait.SpinUntil(() => TaskDelegateQueue.Count > 0); } }
private void Restore_Clicked(object sender, RoutedEventArgs e) { DisableAllButtons(); taskDelegate t = RestoreShortcuts; IAsyncResult asyncResult = t.BeginInvoke(FinishCallback, t); }
public void EnqueueTask(taskDelegate task) { TaskDelegateQueue.Enqueue(task); }
//add task to queue for later handling in Unity's Update() public void addTaskToQueue(taskDelegate theTask) { lock (_taskQueue) { _taskQueue.Enqueue(theTask); } }