В C# /. Net при возникновении ошибки стек регистрируется в журналах ошибок Windows. Однако в моем приложении много вызовов перекрестных потоков. След стека, кажется, останавливается при каждом вызове (MarshalledInvoke).C#: Стоп-стоп при вызове
, например:
мой стек:
Exception Info: Facebook.FacebookApiException
Stack:
at System.Windows.Forms.Control.MarshaledInvoke(System.Windows.Forms.Control, System.Delegate, System.Object[], Boolean)
at System.Windows.Forms.Control.Invoke(System.Delegate, System.Object[])
at Test.TcpTest.InterpretData()
at Test.TcpTest.Incoming(System.String)
at Test.TcpTest.cLoop()
at System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.ThreadHelper.ThreadStart()
происходит исключение в коде выполняется далее в стеке. Тем не менее, стек останавливается в marshalledInvoke каждый раз.
Есть ли что-то, что я могу сделать, чтобы продолжить стек при вызове?
Im, использующий вызовы для остановки «Неверная обработка кросс-потоков: управление осуществляется из потока, отличного от потока, который был создан на« ошибках ». Используется ли делегирование.invoke/begininvoke также для этих исключений? –
Нет, метод BeginInvoke для делегата запускает код на отдельном рабочем потоке. это явно не ** то, что вы хотите сделать, вы хотите запустить код в потоке пользовательского интерфейса, чтобы избежать исключения «Кросс-нить». –