我需要從另一個線程訪問TabControl
的SelectedIndex
財產獲得的SelectedIndex,我試圖用一個Dispatcher
這樣的:試圖從另一個線程
public ListView CurrentTab
{
get
{
ListView listView = null;
Action action =() =>
{
int currentTab = MainWindow.AppWindow.TabControl.SelectedIndex;
//Check wich tab is opened
switch (currentTab)
{
case 0:
listView = MainWindow.AppWindow.PlayingControl.Playing;
break;
case 1:
listView = MainWindow.AppWindow.AllMatchesControl.AllMatches;
break;
case 2:
listView = MainWindow.AppWindow.CustomMatchesControl.CustomMatches;
break;
}
};
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(action));
return listView;
}
}
,但我得到
系統.InvalidOperationException
無法通過調用線程訪問對象,因爲該對象由其他線程屬性擁有。
我想通過SelectedIndex
返回一個列表,我做錯了什麼?
你能告訴你爲什麼你需要通過不同的線程訪問selectedindex嗎?如果你訪問你如何同步它們?換句話說,如果你在值改變之前從另一個線程返回selectedindex,你怎麼能夠捕獲值? – FreeMan
@FreeMan因爲我需要返回一個特定的列表,每個選項卡包含一個列表,所以如果選擇了選項卡2,我需要返回列表CustomMatches。 而應用程序有不同的線程調用'CurrentTab' – AgainMe
您必須使用TabControl所屬的Dispatcher。所以,如果你在一個不同的線程上,並且你編寫了'Application.Current.Dispatcher',它不一定會給你找到你想要的調度器。每個FrameworkElement都有一個包含其調度程序線程的屬性。 – Meloviz