내가 Tweetsharp 라이브러리를 사용하여 특정 트위터 계정의 트윗을 가져 오는 코드가 그 UserControl
에 사용자 정의 UserControl
및 사후 트윗 텍스트의 인스턴스를 생성 한 후 추가 StackPanel
.의 C#/WPF는 - 내가 BackgroundWorker에에서 UI를 업데이트 할 수 없습니다
그러나 나는 많은 트윗을 가져야하고 사용자 컨트롤을 추가하는 동안 응용 프로그램은 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);
}
}
내가 지금하고 싶은 것은 에 포함 된 코드를 수행 할 수없는 문제를 해결하기가 BackgroundWorker
내을 worker_RunWorkerCompleted하지만 시도 할 때마다 사용하여 수행 할 수 많은 UI 구성 요소이 필요하기 때문에, 호출 스레드는 STA해야
하십시오
BackgroundWorker
는 & 날 같은 오류를 제공합니다 실패합니다.
나는 또한 BackgroundWorker에의하지만 운이없는 대신 STA System.Threading.Thread를 사용하여 시도!
무엇이 누락 되었습니까? 저는 WPF에 대해 처음 접했고 중요한 것을 무시할 수 있습니다.
인가? – ali
'BackgroundWorker' 설정 방법을 보여줄 수 있습니까? 어떤 줄에 예외가 있습니까? – YK1
@ali ** BackgroundWorker **와 관련된 모든 것은 _MainWindow_ 클래스 내에서 사용되는 다른 사용자 정의 사용자 정의 컨트롤에 있습니다. –