public TaskDescriptor AddTask(Func<bool> task) { var taskDescriptor = new TaskDescriptor(task); lock (_funcs) { _funcs.Enqueue(taskDescriptor); } return taskDescriptor; }
public async Task<bool> AddTaskAsync(Func<bool> task) { var taskDescriptor = new TaskDescriptor(task); lock (_funcs) { _funcs.Enqueue(taskDescriptor); } var asyncTask = new Task<bool>(() => Wait(taskDescriptor)); return await asyncTask; }
public bool Wait(TaskDescriptor descriptor) { descriptor.IsDone.WaitOne(); return descriptor.Result; }