Please consider this code which works fine:
Code:
IList lstCRCS = claimreviewcyclestatus.get_all_statuses_for_which_document_generation_is_pending();
foreach (claimreviewcyclestatus crcs in lstCRCS)
{
crcs.GenerateDocuments();
}
The above code works fine. claimreviewcyclestatus is a persistent class.
However, I wanted to some multi-threading, and for each individual claimreviewcyclestatus object, generate documents on a separate thread. So I changed the code and for the sake of brevity, I am posting only the relevant code:
Code:
CountedEvent jobFinished = new CountedEvent();
IList lstCRCS = claimreviewcyclestatus.get_all_statuses_for_which_document_generation_is_pending();
foreach (claimreviewcyclestatus crcs in lstCRCS)
{
jobFinished.Reset();
my_state ms = new my_state();
ms.CountedEvent = jobFinished;
ms.Claimreviewcyclestatus = crcs;
ThreadPool.QueueUserWorkItem(new WaitCallback(worker_DoWork), ms);
}
jobFinished.WaitOne();
This is classic Threadppol.QueueworkItem code. But I immediately get an exception: Found shared references to a collection: CID.IPath.NewBusinessLayer.claimreview.col_claimreviewcyclestatus.
claimreview.col_claimreviewcyclestatus is a persistent collection as well.
What am I doing wrong?