Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static BackgroundWorker worker = new BackgroundWorker();
- static void Main(string[] args)
- {
- worker.DoWork += worker_DoWork;
- worker.RunWorkerCompleted += worker_RunWorkerCompleted;
- worker.ProgressChanged += worker_ProgressChanged;
- worker.WorkerReportsProgress = true;
- Console.WriteLine("Starting application.");
- worker.RunWorkerAsync();
- Console.ReadKey();
- }
- static void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- Console.WriteLine("Progress.");
- }
- static void worker_DoWork(object sender, DoWorkEventArgs e)
- {
- Console.WriteLine("Starting doing some work now.");
- for (int i = 0; i < 5; i++)
- {
- Thread.Sleep(1000);
- worker.ReportProgress(i);
- }
- }
- static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- Console.WriteLine("Done now.");
- }
- using System;
- using System.Collections.Generic;
- using System.Threading;
- namespace ConsoleApplication1
- {
- class Program
- {
- private static object LockObject = new Object();
- private static AutoResetEvent _flag;
- private static Queue<int> _list;
- static void Main(string[] args)
- {
- _list = new Queue<int>();
- _flag = new AutoResetEvent(false);
- ThreadPool.QueueUserWorkItem(ProducerThread);
- int itemCount = 0;
- while (itemCount < 10)
- {
- if (_flag.WaitOne(0))
- {
- // there was an item
- lock (LockObject)
- {
- Console.WriteLine("Items in queue:");
- while (_list.Count > 0)
- {
- Console.WriteLine("Found item {0}.", _list.Dequeue());
- itemCount++;
- }
- }
- }
- else
- {
- Console.WriteLine("No items in queue.");
- Thread.Sleep(125);
- }
- }
- }
- private static void ProducerThread(object state)
- {
- Random rng = new Random();
- Thread.Sleep(250);
- for (int i = 0; i < 10; i++)
- {
- lock (LockObject)
- {
- _list.Enqueue(rng.Next(0, 100));
- _flag.Set();
- Thread.Sleep(rng.Next(0, 250));
- }
- }
- }
- }
- private static AutoResetEvent _flag;
- private static Queue<int> _list;
- static void Main(string[] args)
- {
- _list = new Queue<int>();
- _flag = new AutoResetEvent(false);
- ThreadPool.QueueUserWorkItem(ProducerThread);
- int itemCount = 0;
- while (itemCount < 10)
- {
- if (_flag.WaitOne(0))
- {
- // there was an item
- lock (LockObject)
- {
- Console.WriteLine("Items in queue:");
- while (_list.Count > 0)
- {
- Console.WriteLine("Found item {0}.", _list.Dequeue());
- itemCount++;
- }
- }
- }
- else
- {
- Console.WriteLine("No items in queue.");
- Thread.Sleep(125);
- }
- }
- }
- private static void ProducerThread(object state)
- {
- Random rng = new Random();
- Thread.Sleep(250);
- for (int i = 0; i < 10; i++)
- {
- lock (LockObject)
- {
- _list.Enqueue(rng.Next(0, 100));
- _flag.Set();
- Thread.Sleep(rng.Next(0, 250));
- }
- }
- }
- }
- AutoResetEvent ev = new AutoResetEvent(false);
- ...
- if(ev.WaitOne(0, false)) {
- // event happened
- }
- else {
- // do other stuff
- }
- this.asyncOperation = AsyncOperationManager.CreateOperation(null);
- this.asyncOperation.Post(delegateMethod, arg);
Add Comment
Please, Sign In to add comment