Bonjour,
Je vous explique tout d'abord ma situation pour mieux comprendre mon besoin :
J'ai un TabControl géré de manière dynamique. Donc avec :
- Une méthode permettant de créer des nouvelles TabItems.
- Une méthode permettant de supprimer les TabItems
Le problème survient lors de la suppression d'un Item du TabControl.
Ceci pour une bonne raison : Je demande la suppression de l'Item alors que la méthode synchrone que j'appelle pour la suppression se trouve justement dans l'item (du Content) qui doit être supprimé.
Pour résoudre ce problème je me suis donc dit :
J'utilise un thread (ou timer) qui se charge de la suppression du TabItem, comme çà la TabItem n'a pas besoin d'attendre la fin du thread pour terminer son traitement.
Bref ...
Donc l'objectif finale est de pouvoir faire ceci :
Je me retrouve avec une méthode appelé par le code du Content du TabItem :
Code : Sélectionner tout - Visualiser dans une fenêtre à part tabControlConversation.Items.Remove(monItem);
Dans ma méthode ThreadTueur j'ai ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Thread thTueurDeConversation; Conversation conversationASupprimer; public void cmdQuitterConversation(Conversation laConversation) { conversationASupprimer = laConversation; thTueurDeConversation = new Thread(new ThreadStart(ThreadTueur)); thTueurDeConversation.Start(); }
J'ai également essayé comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public void ThreadTueur() { this.Dispatcher.BeginInvoke(delegate { tabControlConversation.Items.Remove(monItem); }); }
Et dans tout les cas j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public void ThreadTueur() { this.Dispatcher.BeginInvoke(new ChangerTabControlItem(ChangerTabControl), monItem); } private delegate void ChangerTabControlItem(TabItem monItem); private void ChangerTabControl(TabItem monItem) { tabControlConversation.Items.Remove(monItem); MessageBox.Show("Remove terminé"); }
Une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Accès inter-threads non valide
Merci.
Partager