public CoreScheduler(IServiceProvider services, IConfiguration configuration) { Logger = services.GetService <ILogger <CoreScheduler> >(); Services = services; Configuration = configuration; PagesQueue = services.GetRequiredService <ObservableConcurrentQueue <WaitingPageModel> >(); PagesQueue.ContentChanged += PagesQueueOnContentChanged; }
private async void PagesQueueOnContentChanged(object sender, ObservableConcurrentQueue <WaitingPageModel> .NotifyConcurrentQueueChangedEventArgs <WaitingPageModel> args) { if (args.Action == ObservableConcurrentQueue <WaitingPageModel> .NotifyConcurrentQueueChangedAction.Enqueue) { // PagesQueue.TryDequeue(out var item); // InternalPagesQueue.Enqueue(item); _canExecute.Set(); } }
public LogViewerViewModel(string name, PipeManager pipeManager, Dispatcher uiDispatcher) { _uiDispatcher = uiDispatcher; _pipeManager = pipeManager; OutputConcurrentQueue = new ObservableConcurrentQueue<LogItem>(MaximumLogItemsAllowed); _viewer = new LogViewer(this); AutoScroll = true; _viewer.Title = string.Format("LogViewer - {0}", name); }
public EmptyScheduler(IServiceProvider services, IConfiguration configuration) { Logger = services.GetService <ILogger <EmptyScheduler> >(); Services = services; Configuration = configuration; PagesQueue = services.GetRequiredService <ObservableConcurrentQueue <WaitingPageModel> >(); PagesQueue.ContentChanged += PagesQueueOnContentChanged; // InternalPagesQueue = new ConcurrentQueue<WaitingPageModel>(); //For the 1st time // PagesQueue.TryDequeue(out var item); // InternalPagesQueue.Enqueue(item); }
/// <summary> /// The main. /// </summary> /// <param name="args"> /// The args. /// </param> private static void Main(string[] args) { var observableConcurrentQueue = new ObservableConcurrentQueue <int>(); observableConcurrentQueue.ContentChanged += OnObservableConcurrentQueueContentChanged; var task = new Task( () => { Console.WriteLine("Enqueue elements..."); for (int i = 1; i <= 20; i++) { observableConcurrentQueue.Enqueue(i); Thread.Sleep(100); } int item; Console.WriteLine("Peek & Dequeue 5 elements..."); for (int i = 0; i < 5; i++) { observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); observableConcurrentQueue.TryDequeue(out item); Thread.Sleep(300); } observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); Console.WriteLine("Dequeue all elements..."); while (observableConcurrentQueue.TryDequeue(out item)) { Thread.Sleep(300); } }); task.Start(); Console.WriteLine("End. Press any key to exit..."); Console.ReadKey(true); }
private static async Task TryItWithThreadSafeAsync() { var observableConcurrentQueue = new ObservableConcurrentQueue <int>(); observableConcurrentQueue.ContentChanged += OnObservableConcurrentQueueContentChanged; await Task.Run(() => { Console.WriteLine("Enqueue elements..."); Parallel.For(1, 20, i => { observableConcurrentQueue.Enqueue(i); }); int item; Console.WriteLine("Peek & Dequeue 5 elements..."); Parallel.For(0, 5, i => { observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); observableConcurrentQueue.TryDequeue(out item); }); Thread.Sleep(300); observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); Console.WriteLine("Dequeue all elements..."); Parallel.For(1, 20, i => { while (observableConcurrentQueue.TryDequeue(out item)) { // NO SLEEP, Force Concurrence // Thread.Sleep(300); } }); } ); }
/// <summary> /// The main. /// </summary> /// <param name="args"> /// The args. /// </param> private static void Main(string[] args) { var observableConcurrentQueue = new ObservableConcurrentQueue<int>(); observableConcurrentQueue.ContentChanged += OnObservableConcurrentQueueContentChanged; var task = new Task( () => { Console.WriteLine("Enqueue elements..."); for (int i = 1; i <= 20; i++) { observableConcurrentQueue.Enqueue(i); Thread.Sleep(100); } int item; Console.WriteLine("Peek & Dequeue 5 elements..."); for (int i = 0; i < 5; i++) { observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); observableConcurrentQueue.TryDequeue(out item); Thread.Sleep(300); } observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); Console.WriteLine("Dequeue all elements..."); while (observableConcurrentQueue.TryDequeue(out item)) { Thread.Sleep(300); } }); task.Start(); Console.WriteLine("End. Press any key to exit..."); Console.ReadKey(true); }
private static void TryItWithoutThreadSafe() { var observableConcurrentQueue = new ObservableConcurrentQueue <int>(); observableConcurrentQueue.ContentChanged += OnObservableConcurrentQueueContentChanged; var task = new Task( () => { Console.WriteLine("Enqueue elements..."); for (int i = 1; i <= 20; i++) { observableConcurrentQueue.Enqueue(i); Thread.Sleep(100); } int item; Console.WriteLine("Peek & Dequeue 5 elements..."); for (int i = 0; i < 5; i++) { observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); observableConcurrentQueue.TryDequeue(out item); Thread.Sleep(300); } observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); Console.WriteLine("Dequeue all elements..."); while (observableConcurrentQueue.TryDequeue(out item)) { Thread.Sleep(300); } }); task.Start(); }
public void InitializeTest() { this._queue = new ObservableConcurrentQueue <int>(); this._queue.ContentChanged += this.OnQueueChanged; }
private void ChooseSource(object sender, RoutedEventArgs e) { this.filesToConvertingQueue = new ObservableConcurrentQueue<string>(); this.filesToConvertingQueue.ContentChanged += OnObservableConcurrentQueueContentChanged; var dialog = new System.Windows.Forms.FolderBrowserDialog(); System.Windows.Forms.DialogResult result = dialog.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { this.filesToConvertingListBox.ItemsSource = this.filesToConvertingQueue; this.sourcePath = dialog.SelectedPath; this.sourcePathLabel.Content = this.sourcePath; this.LoadFiles(); } }
public PlayerHandle() { Queue = new ObservableConcurrentQueue <IRequestMessage>(); IsProcessed = false; Lock = new object(); }
public void InitializeTest() { this.queue = new ObservableConcurrentQueue<int>(); this.queue.ContentChanged += this.OnQueueChanged; }