C # / WPF - я не могу обновить интерфейс от фонового работника

У меня есть код, который выбирает твиты из определенной учетной записи Twitter, используяTweetsharp библиотека, создает экземпляр кастомаUserControl и опубликовать текст в твиттере к этомуUserControl затем добавьте его вStackPanel.

Тем не менее, я должен получить много твитов, и кажется, что приложение зависнет при добавлении пользовательских элементов управления вStackPanel, Я пытался с помощьюBackgroundWorker, но мне не повезло до сих пор.

Мой код:

private readonly BackgroundWorker worker = new BackgroundWorker();

// This ( UserControl ) is used in the MainWindow.xaml
private void UserControl_Loaded_1(object sender, RoutedEventArgs e)
{
    worker.DoWork += worker_DoWork;
    worker.RunWorkerCompleted += worker_RunWorkerCompleted;
    worker.RunWorkerAsync();
}

private void worker_DoWork(object sender, DoWorkEventArgs e)
{
    int usrID;

    var service = new TwitterService(ConsumerKey, ConsumerSecret);
    service.AuthenticateWith(AccessToken, AccessTokenSecret);
    ListTweetsOnUserTimelineOptions options = new ListTweetsOnUserTimelineOptions();
    options.UserId = usrID;
    options.IncludeRts = true;
    options.Count = 10;
    twitterStatuses = service.ListTweetsOnUserTimeline(options);
}

private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    try
    {
        foreach (var item in twitterStatuses)
        {
            TweetViewer tweetViewer = new TweetViewer(); // A UserControl within another UserControl
            tweetViewer.Tweet = item.Text;
            tweetViewer.Username = "@stackoverflow";
            tweetViewer.RealName = "Stack Overflow"
            tweetViewer.Avatar = ImageSourcer(item.Author.ProfileImageUrl);
            stackPanel.Children.Add(tweetViewer);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

}

Теперь я хочу решить проблему неспособности выполнить код, содержащийся вworker_RunWorkerCompleted в пределахBackgroundWorker но каждый раз, когда я пытаюсь выполнить это с помощьюBackgroundWorker это терпит неудачу & дает мне ошибки как:

Вызывающий поток должен быть STA, потому что это требуется для многих компонентов пользовательского интерфейса.

Я пытался также с помощьюSTA System.Threading.Thread вместо BackgroundWorker но без везения!

Чего мне не хватает? Я действительно новичок в WPF и могу игнорировать что-то важное.

Ответы на вопрос(1)

Ваш ответ на вопрос