J'ai essayé d'autres questions pour ajouter du contenu à un bloc de texte WPF à partir de threads de travail en utilisant Dispatcher. J'utilise la méthode suivante:InvalidOperationException Mise à jour de TextBlock
private void AppendLineToChatBox(Inline message)
{
chatBox.Dispatcher.BeginInvoke(new Action(() =>
{
chatBox.Inlines.Add(message);
chatBox.Inlines.Add("\n");
scroller.ScrollToBottom();
}));
}
avec XAML:
<Grid Height="200" Width="300" HorizontalAlignment="Left">
<ScrollViewer Name ="scroller">
<TextBlock TextWrapping="Wrap" Background="White" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Name="chatBox" />
</ScrollViewer>
</Grid>
Quand j'appelle AppendLineToChatBox() à partir d'un fil de fond, je reçois toujours l'exception suivante:
système. InvalidOperationException was unshandled HResult = -2146233079
Message = Le thread appelant ne peut pas accéder à cet objet car un thread différent de possède il.
La méthode correcte serait grandement appréciée.
A quelle ligne ne se l'exception maintenant? Vous êtes sûr qu'il ne s'agit pas de 'scroller.ScrollToBottom()'? – maximpa
exception est levée par chatBox.Inlines.Add (message) – CanCan
Je ne pense pas que ce soit une question en double car j'utilise déjà le répartiteur. – CanCan