public void ScheduleUpdateDataAsync(QueryQueueEntry key) { QueryQueueMutex.WaitOne(); QueryQueue.Enqueue(key); QueryQueueMutex.ReleaseMutex(); AnyOutstandingQuery.Signal(); }
private void RunQueryThread() { for (; ;) { QueryQueueMutex.WaitOne(); while (QueryQueue.IsEmpty() && !EndQueryThread) { AnyOutstandingQuery.Wait(QueryQueueMutex); } if (EndQueryThread) { QueryQueueMutex.ReleaseMutex(); break; } var sig = QueryQueue.Pop(); QueryQueueMutex.ReleaseMutex(); QueryAsyncToCacheAndUpdate(sig); } }
public void Dispose() { EndQueryThread = true; AnyOutstandingQuery.Signal(); QueryThread.Join(); }