public void FlushAllTargets(IFlushingThreadData <int> flushingThreadData) { lock (threadLocker) { threadNumbersSortedSet.Add(flushingThreadData.Data); while (threadNumbersSortedSet.Min != flushingThreadData.Data) { Monitor.Wait(threadLocker); } WaitAllTasksToFlush(); for (int i = 0; i < loggerTargets.Length; i++) { //loggerTargets[i].Flush(flushingThreadData.LogsInfo); flushingTasks[i] = loggerTargets[i].FlushAsync(flushingThreadData.LogsInfo); } threadNumbersSortedSet.Remove(flushingThreadData.Data); Monitor.Pulse(threadLocker); } }
private void WriteLogsToTargets(Object flushingThreadDataObj) { IFlushingThreadData <int> flushingThreadData = (IFlushingThreadData <int>)flushingThreadDataObj; loggerTargetFlushingThreadPool.FlushAllTargets(flushingThreadData); }