2012-01-21 14 views
1

私はWPFでツイッタークライアントを開発しています。バックグラウンドワーカーを使ってツイートを更新しようとしていますが、このエラーメッセージ "別のスレッドが所有しているためこのオブジェクトにアクセスできません"というエラーメッセージが表示されます。"呼び出しスレッドは、別のスレッドが所有しているため、このオブジェクトにアクセスできません。" Twitterizer

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(); 
} 

ありがとうございました。

+0

[スレッドの問題 "別のスレッドがそれを所有しているため、呼び出し元のスレッドはこのオブジェクトにアクセスできません"という重複があります。任意のソリューション?](http://stackoverflow.com/questions/7684206/threading-issue-the-calling-thread-cannot-access-this-object-because-a-differen) – JasonMArcher

答えて

1

DoWorkメソッド内から直接UI要素を更新しようとすると、このエラーが発生します。

進捗状況を報告するには、BackgroundWorker.ReportProgressメソッドを使用する必要があります。その後、UIで、BackgroundWorker.ProgressChangedイベントを購読します。これにより、進行状況の更新が正しいスレッドにマーシャリングされるようになります。 DoWork内から直接UI要素を更新しないでください。

+0

これは動作します、ありがとう! "D – user1161828

関連する問題

 関連する問題