I have a program in C# where I am reading all the messages from a MSMQ.
I have declared a class Queue as below
Expand|Select|Wrap|Line Numbers
- public class MyQueue
- {
- public static Queue myqueue;
- public MyQueue()
- {
- myqueue = new Queue();
- public void PostItem(Hashtable item)
- {
- lock (myqueue)
- {
- myqueue.Enqueue(item);
- if (myqueue.Count == 1)
- {
- checkcount++;
- Monitor.Pulse(myqueue);
- }
- }
- }
- public Hashtable GetItem(int maxWait)
- {
- lock (myqueue)
- {
- if (myqueue.Count == 0)
- {
- if (maxWait == 0)
- return default(Hashtable);
- Monitor.Wait(myqueue, maxWait);
- if (myqueue.Count == 0)
- return default(Hashtable);
- }
- return (Hashtable) myqueue.Dequeue();
- }
- }
- public void ToDB(object nullvalue)
- {
- MyQueue myqueu = new MyQueue();
- Hashtable hashtable2;
- try
- {
- //int countRecords = 0;
- DataRow dr;
- while (true)
- {
- hashtable2 = (Hashtable)myqueu.GetItem(5000);
- if (hashtable2 == null)
- {
- }
- else
- {
- }
- }
- }
- }
- }
Expand|Select|Wrap|Line Numbers
- ThreadPool.SetMaxThreads(50, 50);
- MyQueue myQ = new MyQueue();
- ThreadPool.QueueUserWorkItem(new WaitCallback(myQ.ToDB), null);
I placed the counter in the Post Item.
Whereas only few records were retrieved in GetItem.
eg, If there are 1000 records in the MSMQ, i received all in the Post Item, whereas I could retrieve only 6 or 5 or 7 in the Get Item part.
Where am i going wrong.
Kindly help.
Regards
cmrhema