В моем проекте у меня есть busyindicator
, и я использую ListObject
в FirstMethod
и SecondMethod
.Вызывающая нить не может получить доступ к объекту, потому что другой поток принадлежит ему
Программа выдает следующую ошибку:
The calling thread cannot access the object because a different thread owns it
Я использую следующий код:
public static readonly DependencyProperty ListObjectProperty =
DependencyProperty.Register("ListObject", typeof(ObservableCollection<FileViewModel>), typeof(MyObjectViewModel), new PropertyMetadata(ChangeCallback));
public ObservableCollection<FileViewModel> ListObject
{
get { return (ObservableCollection<FileViewModel>)GetValue(ListObjectProperty); }
set { SetValue(ListObjectProperty, value); }
}
private void SelectedPath()
{
NavigatePage(new Page2());
FirstMethod();
}
private void FilesCase()
{
var t = new Task(() => this.ThreadFilesCase());
t.ContinueWith(
(o) =>
{
Dispatcher.BeginInvoke(new Action(() =>
{
IsBusy = false; NavigatePage(new Page3());
}));
});
IsBusy = true;
t.Start();
}
private void ThreadFilesCase()
{
SecondMethod();
}
проверил ли вы это? http://stackoverflow.com/questions/10764747/exception-the-calling-thread-cannot-access-this-object-because-a-different-thr Вам, вероятно, потребуется настроить делегат и вызвать его. – Corey
Есть ли что-нибудь в 'SecondMethod', которое обращается к' UIElement' –
Это, скорее всего, связано с многопоточным. Я все равно ответил, помогая вам с вашей конкретной проблемой. Попробуйте прочитать некоторые материалы по многопоточности и обновить элементы управления ui из другого потока. –