我正在开发WPF中的Twitter客户端,我想使用后台工作程序来更新推文,但会产生此错误消息“调用线程无法访问此对象,因为不同的线程拥有它” .
public NewTweet()
{
InitializeComponent();
this.MouseLeftButtonDown += (o, e) => DragMove();
worker.WorkerReportsProgress = true;
worker.DoWork += DoWork;
worker.RunWorkerCompleted += WorkerCompleted;
}
void DoWork(object sender, DoWorkEventArgs e)
{
TwitterResponse<TwitterStatus> tweetResponse = TwitterStatus.Update(token, txttweet.Text);
System.Threading.Thread.Sleep(5);
}
private void button1_Click(object sender, RoutedEventArgs e)
{
worker.RunWorkerAsync();
}
非常感谢你 .
1 回答
如果您尝试直接从DoWork方法内部更新UI元素,则会出现此错误 .
要报告进度,应使用BackgroundWorker.ReportProgress方法 . 然后,在您的UI中,订阅BackgroundWorker.ProgressChanged事件 . 这将确保将进度更新编组到正确的线程上 . 您不应直接从DoWork内部更新UI元素 .