public void Test_OK_No_TimeOut() { _MRE = new ManualResetEvent(false); Thread nThread = new Thread(() => ThreadReleaser(2000)); nThread.Start(); Task t = _MRE.AsTask(); t.Should().NotBeNull(); t.Wait(); _RunnedOK.Should().BeTrue(); }
public void Test_Cancelled_TimeOut() { _MRE = new ManualResetEvent(false); Thread nThread = new Thread(() => ThreadReleaser(5000)); nThread.Start(); Task t = _MRE.AsTask(TimeSpan.FromSeconds(1)); t.Should().NotBeNull(); t.ContinueWith(tt => tt.IsCanceled.Should().BeTrue()); _RunnedOK.Should().BeFalse(); }
public async Task SearchAsync(CancellationTokenSource cancellationTokenSource) { ManualResetEvent waitEvent = new ManualResetEvent(false); object[] objects = new object[] { checker, proxyProvider }; foreach (object @object in objects) { IAsyncInitialization asyncInitialization = @object as IAsyncInitialization; if (asyncInitialization != null) asyncInitialization.InitializeAsync(cancellationTokenSource, taskManager, httpDownloaderContainer, this, this, geoIP); } IEnumerable<ISearchEngine> searchEngines = searchEngine as IEnumerable<ISearchEngine>; if (searchEngines == null) { await SearchAsyncInternal(searchEngine, cancellationTokenSource); } else { List<Task> tasks = new List<Task>(); foreach (ISearchEngine engine in searchEngines) { tasks.Add(SearchAsyncInternal(engine, cancellationTokenSource)); } await Task.WhenAll(tasks); } taskManager.OnCompleted += () => { waitEvent.Set(); }; await waitEvent.AsTask(); }