AvalonEdit Смена владельца темы - PullRequest
0 голосов
/ 20 января 2020

Я использую AvalonEdit уже более 2 лет без проблем, и он прекрасно работает
У меня только одна проблема при изменении текста из фоновой нити
с использованием SetOwnerThread() триггера метода VerifyAccess() Исключение каждый раз даже при вызове из основного потока
Если я делаю все в основном потоке, это работает, но это также останавливает пользовательский интерфейс
Именно поэтому я хочу сделать это в другом потоке и показать пользователю индикатор загрузки
I не могу понять, что я делаю здесь не так
Любая помощь или идея будут высоко оценены
Заранее спасибо

Редактировать:
Я не знаю не хотите использовать 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

...