public void Debug(string message, params object[] formatOptions) { using (_loggers.EnterReadScope()) Parallel.ForEach(_loggers, (logger) => { try { logger.Debug(message, formatOptions); } catch { // ignored } }); }
public virtual T Get(int index) { using (_pageHeaders.EnterReadScope()) { var firstPage = _pageHeaders[0]; var lastPage = _pageHeaders[_pageHeaders.Count - 1]; if (index < firstPage.StartIndex || index > lastPage.EndIndex) { throw new SoftwareException("Index out of bounds. Requested index {0} total elements was {1}", index, lastPage.EndIndex); } var pageIndex = _pageHeaders.BinarySearch(index, (x, p) => { if (index < p.StartIndex) { return(-1); } if (index > p.EndIndex) { return(+1); } return(0); }); var pageHeader = _pageHeaders[pageIndex]; var loadedPage = _loadedPages[pageHeader]; return(loadedPage.GetItem(index)); } }