В последнее время мы сталкиваемся с проблемой сбоя в нашем приложении (не на регулярной основе, как правило, на стороне клиента), и мы не можем отслеживать причину ошибки. Большая часть времени, ошибки, которые мы получаем из журнала что-то вроде этого ..Проблема сбоя приложения в приложении WPF в архитектуре MVVM
Type : System.IndexOutOfRangeException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Message : Index was outside the bounds of the array.
Source : mscorlib
Help link :
Data : System.Collections.ListDictionaryInternal
TargetSite : Void Add(T)
HResult : -2146233080
Stack Trace : at System.Collections.Generic.List`1.Add(T item)
System.ComponentModel.BackgroundWorker.OnRunWorkerCompleted(RunWorkerCompletedEventArgs e)
at System.ComponentModel.BackgroundWorker.AsyncOperationCompleted(Object arg)
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
Также для того, чтобы справиться с аварией на уровне приложения, мы написали определенный код в файле App.xaml.cs
т.е.
private void CurrentDomain_UnhandledException(object sender,
UnhandledExceptionEventArgs e)
{
try
{
var exception = (Exception) e.ExceptionObject;
ExceptionHandler.HandleException(exception);
WpfMessageBox.Show(LocalizationManager.GetValue("AppErrorUnhandledException").ToString(),
LocalizationManager.GetValue("AppErrorUnhandledException").ToString(),
WpfMessageBoxButtons.OK,
WpfMessageBoxIcon.Error);
}
Есть ли что-то, что нам нужно сделать помимо этого, чтобы остановить приложение внезапно?
Примечание: Наше приложение основано на MVVM модели, концепции, такие как службы фасада, единство, оркестровки сервисов, MutiThreading (Использование фона для вызова службы асинхр)
PS: Обычно, как в журналах, мы получают эту ошибку при кэшировании данных.
сва исключение indexOut, там не может быть любым обходным путем, кроме вас, его обработки, специально или фиксируя его – Muds
Глядя на StackTrace, Похоже, вы обращаетесь к '' List в нескольких потоках без правильная синхронизация. Вам нужно синхронизировать доступ. –