public void Execute_WithAnyAsyncAction_ShouldReturnImmediately() { var executer = new WorkExecuter(); Action act = () => executer.Execute(async() => await Task.Delay(5000)); act.ExecutionTime().Should().BeLessThan(1.Seconds()); }
public void Execute_WithAnyAction_ShouldReturnImmediately() { var executer = new WorkExecuter(); Action act = () => executer.Execute(() => Thread.Sleep(5000)); act.ExecutionTime().Should().BeLessThan(1.Seconds()); }
public async Task Execute_WithAnyAction_ShouldRaisePropertyChanged() { var executer = new WorkExecuter(); using (var monitor = executer.Monitor()) { await executer.Execute(() => { }); monitor.GetEventRecorder(nameof(executer.PropertyChanged)).Should().NotBeEmpty(); } }
public async Task Execute_WithAnyAction_ShouldSetIsWorking() { var executer = new WorkExecuter(); var task = executer.Execute(() => Thread.Sleep(5000)); executer.IsWorking.Should().BeTrue(); await task; executer.IsWorking.Should().BeFalse(); }
/// <summary> /// attempts to increase executers. /// </summary> /// <returns></returns> private Task TryIncreaseExecuters() { int currentNumOfExecuters = this.m_Executers.Count; int qNumber = this.m_QueueManager.Count; //we maxed out ? // if we add, will it be more than queues? if (currentNumOfExecuters == this.m_MaxNumOfWorkers || (currentNumOfExecuters + 1) > qNumber) { return(Task.FromResult(0)); } // we are good add WorkExecuter <Handler, Wi> newExecuter = new WorkExecuter <Handler, Wi>(this); newExecuter.Start(); this.m_Executers.AddOrUpdate(newExecuter.m_WorkerExecuterId, newExecuter, (k, v) => { return(newExecuter); }); return(Task.FromResult(0)); }
public WorkExecuterViewModel(WorkExecuter workExecuter) { WorkExecuter = workExecuter; workExecuter.PropertyChanged += WorkExecuter_PropertyChanged; }