スレッドで一定周期毎にTextBlockへメッセージを追加する処理を実装しようとしています。
単に追加するだけなら、スレッド内で呼び出しているメソッドにて
textBlock1.Dispatcher.BeginInvoke( new Action(() => { textBlock1.Inlines.Add("hogepiyo"); textBlock1.Inlines.Add("\n"); }) );
という形で1行ずつ追加できていますが、一番上に追加させるため以下のようにすると、
var addItem = new Run() { Text = "hogepiyo", FontSize = 15 }; textBlock1.Dispatcher.BeginInvoke( new Action(() => { textBlock1.Inlines.InsertBefore(textBlock1.Inlines.FirstInline, addItem); }) );
「InvalidOperationException:このオブジェクトは別のスレッドに所有されているため、呼び出しスレッドはこのオブジェクトにアクセスできません。」が発生してしまいます。
InsertBeforeの部分かとは思いますが、調べてもなかなか出てきません。
どなたかご教授よろしくお願い致します。
解決方法追記
textBlock1.Dispatcher.BeginInvoke( new Action(() => { var addItem = new Run() { Text = "hogepiyo", FontSize = 15 }; textBlock1.Inlines.InsertBefore(textBlock1.Inlines.FirstInline, addItem); }) );

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/10 01:29