Я использую AvalonEdit уже более 2 лет без проблем, и он отлично работает
Я просто столкнулся с одной проблемой при изменении текста из фонового потока
с использованием SetOwnerThread()
триггера метода VerifyAccess()
Exception каждый раз, даже при вызове из основного потока< br> Если я делаю все в основном потоке, все работает, но это также останавливает пользовательский интерфейс
Вот почему я хочу сделать это в другом потоке и показать пользователю индикатор загрузки
Кажется, я не могу понять, что я делаю неправильно здесь
Любая помощь или идея будут очень признательны
Спасибо заранее
Изменить:
я не хочу использовать Dispatcher.Invoke
, потому что он будет блокировать пользовательский интерфейс при обновлении.
Образец кода
public async void EditTextSample()
{
Thread lUiThread = Thread.CurrentThread;
//SelectedTab is the current tab viewed by the user in my application
SelectedTab.TextEditor.Document.SetOwnerThread(null);
await Task.Run(() =>
{
Thread lBackgroundThread = Thread.CurrentThread;
SelectedTab.TextEditor.Document.SetOwnerThread(lBackgroundThread);
string lNewText = ""
SelectedTab.TextEditor.Document.Text = lNewText;
SelectedTab.TextEditor.Document.SetOwnerThread(lUiThread);
});
}
Несколько скриншотов
https://imgur.com/VKsGXvk
Dispatcher.Invoke
для обновления элементов управления из другого потока, как описано здесь Изменить элементы управления WPF из неосновного потока с помощью Dispatcher.Invoke Кроме того, не публикуйте код/ошибки в виде изображений - person Pavel Anikhouski   schedule 20.01.2020