public LogTabPage AddLogPage(string text)
        {
            LogTabPage page = new LogTabPage();
            page.Text = text;
            _tabControlLogContainer.TabPages.Add(page);

            return page;
        }
        internal BookLogAppender(LogTabPage page, ExecutionContext context)
        {
            Contract.Requires(page != null);
            Contract.Requires(context != null);

            _page = page;
            _context = context;
            _context.NewText += OnNewText;
            _context.BookChanged += OnBookChanged;
        }
        internal void SetConsumer(LogTabPage page)
        {
            Contract.Requires(page != null);

            if (_page == null) {
                _sync = new SemaphoreSlim(0);
                Tuple<Level, string> tuple;
                while (_cache.TryDequeue(out tuple)) {
                    page.Append(tuple.Item1, tuple.Item2);
                }
                _page = page;
                _cache = null;
                _sync.Release();
            }
        }