public FormLoader(Plugin plugin, RecordReader stockReader, bool lazyLoading, int backgroundJobs)
{
if (backgroundJobs < 0)
throw new ArgumentException("Number of bakcground jobs must be a positive integer or zero");
sharedData = new SharedData()
{
Plugin = plugin,
StockReader = stockReader,
LazyLoading = lazyLoading,
FormsToLoad = new BlockingCollection<Form>(new ConcurrentQueue<Form>(), 1024),
WorkerCompleteEvent = new AutoResetEvent(false)
};
this.stockReader = stockReader;
asyncLoading = backgroundJobs > 0;
bool useStockReader = true;
while (backgroundJobs-- > 0)
{
Worker worker = new Worker(sharedData, useStockReader);
worker.RunWorkerCompleted += Worker_RunWorkerCompleted;
worker.RunWorkerAsync();
workers.Add(new WorkerInfo()
{
Worker = worker
});
// Only the first worker can use the stock reader
useStockReader = false;
}
}