Hi, All
I have a program in C# where I am reading all the messages from a MSMQ.
I have declared a class Queue as below
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
{
}
}
}
}
}
I call in the button click event as
ThreadPool.SetMaxThreads(50, 50);
MyQueue myQ = new MyQueue();
ThreadPool.QueueUserWorkItem(new WaitCallback(myQ.ToDB), null);
Now the prblem I face is, all the messages from the MSMQ are getting read, I placed a counter and verified.
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
Hemalatha