예제 #1
0
 public CoreScheduler(IServiceProvider services, IConfiguration configuration)
 {
     Logger                     = services.GetService <ILogger <CoreScheduler> >();
     Services                   = services;
     Configuration              = configuration;
     PagesQueue                 = services.GetRequiredService <ObservableConcurrentQueue <WaitingPageModel> >();
     PagesQueue.ContentChanged += PagesQueueOnContentChanged;
 }
예제 #2
0
 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();
     }
 }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
        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);
                    }
                });
            }
                           );
        }
예제 #7
0
        /// <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);
        }
예제 #8
0
        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;
 }
예제 #10
0
 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();
     }
 }
예제 #11
0
 public PlayerHandle()
 {
     Queue       = new ObservableConcurrentQueue <IRequestMessage>();
     IsProcessed = false;
     Lock        = new object();
 }
예제 #12
0
 public void InitializeTest()
 {
     this.queue = new ObservableConcurrentQueue<int>();
     this.queue.ContentChanged += this.OnQueueChanged;
 }