Click here to Skip to main content
15,905,144 members
Home / Discussions / C#
   

C#

 
GeneralRe: C# and XML Pin
picasso21-Mar-10 16:40
picasso21-Mar-10 16:40 
AnswerRe: C# and XML Pin
Saksida Bojan28-Feb-10 19:03
Saksida Bojan28-Feb-10 19:03 
QuestionSave a variable Pin
suprsnipes28-Feb-10 15:15
suprsnipes28-Feb-10 15:15 
AnswerRe: Save a variable Pin
DaveyM6928-Feb-10 15:28
professionalDaveyM6928-Feb-10 15:28 
GeneralRe: Save a variable Pin
suprsnipes28-Feb-10 16:07
suprsnipes28-Feb-10 16:07 
GeneralRe: Save a variable Pin
PIEBALDconsult28-Feb-10 16:10
mvePIEBALDconsult28-Feb-10 16:10 
GeneralRe: Save a variable Pin
suprsnipes28-Feb-10 16:14
suprsnipes28-Feb-10 16:14 
GeneralRe: Save a variable Pin
Mycroft Holmes28-Feb-10 16:58
professionalMycroft Holmes28-Feb-10 16:58 
QuestionC# Times Pin
Illegal Operation28-Feb-10 12:19
Illegal Operation28-Feb-10 12:19 
AnswerRe: C# Times Pin
Luc Pattyn28-Feb-10 12:33
sitebuilderLuc Pattyn28-Feb-10 12:33 
AnswerRe: C# Times Pin
David Skelly28-Feb-10 22:27
David Skelly28-Feb-10 22:27 
Questionmove a file from one directory to another Pin
Yustme28-Feb-10 12:15
Yustme28-Feb-10 12:15 
AnswerRe: move a file from one directory to another Pin
Luc Pattyn28-Feb-10 12:34
sitebuilderLuc Pattyn28-Feb-10 12:34 
GeneralRe: move a file from one directory to another Pin
Yustme28-Feb-10 12:57
Yustme28-Feb-10 12:57 
AnswerRe: move a file from one directory to another Pin
Luc Pattyn28-Feb-10 13:09
sitebuilderLuc Pattyn28-Feb-10 13:09 
GeneralRe: move a file from one directory to another [modified] Pin
Yustme28-Feb-10 22:35
Yustme28-Feb-10 22:35 
GeneralRe: move a file from one directory to another Pin
Yustme1-Mar-10 0:09
Yustme1-Mar-10 0:09 
GeneralRe: move a file from one directory to another Pin
Luc Pattyn1-Mar-10 0:56
sitebuilderLuc Pattyn1-Mar-10 0:56 
GeneralRe: move a file from one directory to another Pin
Yustme1-Mar-10 3:05
Yustme1-Mar-10 3:05 
GeneralRe: move a file from one directory to another Pin
Yustme1-Mar-10 12:09
Yustme1-Mar-10 12:09 
Questionhelp with threads and locks [modified] Pin
codeguruk28-Feb-10 9:23
codeguruk28-Feb-10 9:23 
AnswerRe: help with threads and locks Pin
Saksida Bojan28-Feb-10 19:50
Saksida Bojan28-Feb-10 19:50 
Generalthis is the code i use to check it: Pin
codeguruk28-Feb-10 21:09
codeguruk28-Feb-10 21:09 
input is: 1,2,3,4,5,6,7,8,9,10 (several times)

namespace Test
{
    public class SyncQueue<T>
    {
        private Queue<T> queue;
        private object readerLock;
        private object queueLock;
        private AutoResetEvent dataAvailable;

        public SyncQueue()
        {
            this.queue = new Queue<T>();
            this.readerLock = new object();
            this.queueLock = new object();
            this.dataAvailable = new AutoResetEvent(false);
        }

        public void Enqueue(T item)
        {
            lock (queueLock)
            {
                queue.Enqueue(item);
                Console.WriteLine("Enqueued Item: " + item);
            }
            dataAvailable.Set();
        }

        public T Dequeue()
        {
            lock (readerLock)
            {
                if (queue.Count == 0)
                {
                    dataAvailable.WaitOne();
                }
                lock (queueLock)
                {
                    return queue.Dequeue();
                }
            }
        }
    }

    public class Tester
    {
        SyncQueue<int> myQ = null;

        public Tester(SyncQueue<int> queue)
        {
            myQ = queue;
        }

        public void ProcessMessages(object obj)
        {
            while (true)
            {
                Console.WriteLine(myQ.Dequeue());
            }
        }
    }

    public class Program
    {
        static void Main(string[] args)
        {
            SyncQueue<int> myQ = new SyncQueue<int>();
            Tester t1 = new Tester(myQ);
            Tester t2 = new Tester(myQ);
            Tester t3 = new Tester(myQ);
            ThreadPool.QueueUserWorkItem(new WaitCallback(t1.ProcessMessages));
            ThreadPool.QueueUserWorkItem(new WaitCallback(t2.ProcessMessages));
            ThreadPool.QueueUserWorkItem(new WaitCallback(t3.ProcessMessages));

            while (true)
            {
                string[] snumbs = Console.ReadLine().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string snumb in snumbs)
                {
                    myQ.Enqueue(int.Parse(snumb));
                }
            }
        }
    }
}



the exception is: Invalid Operation Exception - queue is empty.

any idea?

thanks,
GeneralRe: this is the code i use to check it: Pin
Saksida Bojan28-Feb-10 22:42
Saksida Bojan28-Feb-10 22:42 
GeneralRe: this is the code i use to check it: Pin
codeguruk1-Mar-10 2:08
codeguruk1-Mar-10 2:08 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.