Имейте проблему, которую очень трудно воспроизвести.
Исключение:Есть BackgroundWorker.RunWorkerCompleted Thread Safe
e.Exception.Message = Object reference not set to an instance of an object.
e.Exception.StackTrace
at System.Windows.Controls.ItemContainerGenerator.MoveToPosition(GeneratorPosition position, GeneratorDirection direction, Boolean allowStartAtRealizedItem, GeneratorState& state)
at System.Windows.Controls.ItemContainerGenerator.Generator..ctor(ItemContainerGenerator factory, GeneratorPosition position, GeneratorDirection direction, Boolean allowStartAtRealizedItem)
Ловля, что в App.cs App_DispatcherUnhandledException
Я думаю, что это из XAML, как я Перерыв на Метательном включены для каждого варианта в Visual Studio.
И я уверен, что у меня есть весь код, завернутый в Try Catch.
Наверняка, страница, на которой, как я думаю, возникла ошибка, забирает весь код за исключениями.
Если я сломаюсь на получение этих публичных объектов, я не могу воспроизвести ошибку.
Поскольку я замедляю его, чтобы попробовать и отлаживать, его труднее воспроизвести.
Имейте несколько вкладок, где я показываю текст, используя TextBlock и форматированный текст, используя FlowDocumentViewer.
Источник обязателен для публичных объектов. Публичное свойство TextBlock.Text - это RawText, а переменная подстановки - rawText.
Я получаю текст и информацию для форматирования текста на BackgroundWorker, который создается в потоке пользовательского интерфейса ..
Перед вызовом BackgroundWorker я поставил rawText, чтобы «получать текст» и вызвать CancelAsync(), если BackgroundWorker IsBusy ,
Затем в RunWorkerCompletedEventHandler я установил rawText в фактический текст. Затем я вызываю notifypropertychanged, если эта вкладка выбрана так, чтобы она не отображалась, если она не видна.
Возможно, проблема в том, что я меняю rawText в RunWorkerCompletedEventHandler, пока элемент управления читает rawText? Или я меняю rawText на «получение текста», пока элемент управления пользовательского интерфейса читает текст?
И другие мысли?
Поместив блокировки на эти задания, исправьте это?
Не MVVM.
Я думал, что я достаточно описал код, но, видимо, нет.
rawText = "getting text";
backgroundWorker.RunWorkerAsync(input);
затем в RunWorkerCompleted
DocTextAndHighlight docTextAndHighlight = (GabeLib.DocTextAndHighlight)e.Result;
rawText = docTextAndHighlight.RawText;
NotifyPropertyChanged на RawText вызывается только если вкладка открыта.
Добавлено Замки и не может воспроизвести ошибку, но это не значит, что она исчезла.
Необходимо будет проверить на производстве.
Также добавлен проход через конверты в элементы управления, которые я подозреваю, и выписать отладочное сообщение.
Я не то, что бросает исключение, и исключение ничего мне не говорит.
Это может быть старый компонент com с интерфейсом DDE.
Один вызов метода сообщает об этой же ошибке.
Это вызов метода, который терпит неудачу только 1 из 10 000.
Но если он терпит неудачу, он будет сбой в блоках.
И этот вызов находится в блоке try catch, но по какой-то причине он не попадает в прямой блок. Предоставлено, что ошибка имеет очень мало информации, но это точно такая же ошибка. Плохая часть заключается в том, что она вызывает сбой приложения.
Я могу установить e.Handled = true; но он по-прежнему часто вызывает ошибку, чтобы свернуть приложение.
Голосовать за закрытие? Что еще тебе нужно? Я не знаю, какая строка выбрасывает исключение, поэтому я не знаю, какой код отправлять. Как я утверждаю, я думаю, что это происходит от рендеринга. – Paparazzi
Два голоса, чтобы закрыть? Какая вам информация? – Paparazzi
Нам нужен репрограммирование, что-то, что мы можем запустить и отладить. Трассировка стека полностью неадекватна. Сейчас даже не ясно, является ли это еще одним исключением, которое WPF проглатывает, и это многое делает. Отметьте флажок «Бросок», и вы станете более счастливым пользователем WPF. –