Необрабатываемое исключение в WinForms
От: vaa https://www.youtube.com/playlist?list=PLtrvASfI1KW7VOYRKjglcagQzWLoxlncl
Дата: 05.10.21 02:40
Оценка:
Самое приложение компилируется под .net452
После старта скрывается в системный лоток.
В контекстном меню кнопка с лямбдой запускающей выход.
В конкретном случае прога запустилась в 8 утра и в 15 при клике выхода упала.
Причем по логу все компоненты успешно завершили свою работу. само приложение использует DevExpress 17.2
  Текст исключения

System.IndexOutOfRangeException: Индекс находился вне границ массива.
в System.Array.InternalGetReference(Void* elemRef, Int32 rank, Int32* pIndices)
в System.Array.SetValue(Object value, Int32 index)
в System.Collections.Hashtable.CopyValues(Array array, Int32 arrayIndex)
в System.Collections.Hashtable.ValueCollection.CopyTo(Array array, Int32 arrayIndex)
в System.Windows.Forms.Application.ThreadContext.ExitCommon(Boolean disposing)
в System.Windows.Forms.Application.ExitInternal()
в System.Windows.Forms.Application.Exit(CancelEventArgs e)
в MyApp.AppProgram.Stop()
в MyApp.AppProgram.<>c__DisplayClass13_0.<AddToMenu>b__8(Object o, EventArgs e)
в System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
в System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
в System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
в System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
в System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
в System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
в System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
в System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
в System.Windows.Forms.ToolStrip.WndProc(Message& m)
в System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Загруженные сборки **************
mscorlib
Версия сборки: 4.0.0.0
Версия Win32: 4.8.4400.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll



В корке похожая проблема была в интенсивных тестах

Вроде пофиксили добавив замок:
            public ThreadContext()
            {
                .....
                lock (s_tcInternalSyncObject)
                {
                    s_contextHash[_id] = this;
                }
            }


Вот думаю, если добавить в Main обработчики смогу ли я словить это исключение(в .net этот косяк исправлен видимо не будет)
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ThreadException += new ThreadExceptionEventHandler(OnGuiUnhandedException);
AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;



Сложно отлаживать т.к. у себя отловить не могу.
Ловится случайно.
Пробовал AutoIt гонять(запуск и выход как вначале описал) на релизе не помогло. Возможно требуется длительный период бездействия.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.