Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
 private void Restore_Clicked(object sender, RoutedEventArgs e)
 {
     DisableAllButtons();
     taskDelegate t           = RestoreShortcuts;
     IAsyncResult asyncResult = t.BeginInvoke(FinishCallback, t);
 }
Esempio n. 3
0
 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);
     }
 }