void UpdateCounters(object state)
        {
            while (true)
            {
                // Wait for the signal to be set
                signal.WaitOne();

                try
                {
                    using (mailbox.Messages.ReaderLock)
                    {
                        unread     = mailbox.Messages.Count(m => m.IsRead == false && m.MessageFolder != Folders.Trash && m.MessageFolder != Folders.None && m.MessageFolder != Folders.Spam);
                        starred    = mailbox.Messages.Count(m => m.IsStarred && m.MessageFolder != Folders.Trash && m.MessageFolder != Folders.None && m.MessageFolder != Folders.Spam);
                        todo       = mailbox.Messages.Count(m => m.IsTodo && m.MessageFolder != Folders.Trash && m.MessageFolder != Folders.None && m.MessageFolder != Folders.Spam);
                        waitingFor = mailbox.Messages.Count(m => m.IsWaitingFor && m.MessageFolder != Folders.Trash && m.MessageFolder != Folders.None && m.MessageFolder != Folders.Spam);
                        someday    = mailbox.Messages.Count(m => m.IsSomeday && m.MessageFolder != Folders.Trash && m.MessageFolder != Folders.None && m.MessageFolder != Folders.Spam);
                        drafts     = mailbox.Messages.Count(m => m.IsDraft && m.MessageFolder != Folders.Trash && m.MessageFolder != Folders.None && m.MessageFolder != Folders.Spam);
                    }

                    Thread.CurrentThread.ExecuteOnUIThread(delegate
                    {
                        using (labels.ReaderLock)
                            labels.ForEach(l => l.Refresh());

                        OnPropertyChanged("Unread");
                        OnPropertyChanged("Starred");
                        OnPropertyChanged("Todo");
                        OnPropertyChanged("WaitingFor");
                        OnPropertyChanged("Someday");

                        LabelsViewSource.View.Refresh();
                    });
                }
                catch (Exception ex)
                {
                    Logger.Error("An error has occured while trying to update counters. Exception = {0}", LogSource.UI, ex);
                }
            }
        }