C# (4.0) に通常の Queue オブジェクトがあり、この Queue にアクセスする BackgroundWorkers を使用しています。
私が使用していたコードは次のとおりです。
do
{
while (dataQueue.Peek() == null // nothing waiting yet
&& isBeingLoaded == true // and worker 1 still actively adding stuff
)
System.Threading.Thread.Sleep(100);
// otherwise ready to do something:
if (dataQueue.Peek() != null) // because maybe the queue is complete and also empty
{
string companyId = dataQueue.Dequeue();
processLists(companyId);
// use up the stuff here //
} // otherwise nothing was there yet, it will resolve on the next loop.
} while (isBeingLoaded == true // still have stuff coming at us
|| dataQueue.Peek() != null); // still have stuff we haven’t done
ただし、スレッドを扱うときは . を使用する必要があると思いConcurrentQueue
ます。ConcurrentQueue
上記のように Do While ループで a を使用する方法の例があるかどうか疑問に思っていましたか?
TryPeek で試したことはすべてうまくいきませんでした..
何か案は?