Моя проблема в том, что какой-то код вызывается реентерабельным способом, что приводит к его аварийному завершению и попытке отладки того, как он может быть вызван 2-мя потоками или реентерабельным с одним и тем же потоком.Я добавил журнал, который выдает Environment.StackTrace, и вот что он получил в конце этого сообщения.
Моя путаница заключается в следующей строке:
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
Это похоже на верхили начало любого стека.Но обратите внимание, что трассировка стека фактически начинается перед этими строками.На самом деле, строка, предшествующая приведенным выше, выглядит так:
at TickZoom.MBTFIX.MBTFIXSimulator.OnTick(Message quoteMessage, SymbolInfo symbol, Tick tick) in C:\Local\TickZoom\Project\Public\Providers\MBTFIX\MBTFIXProvider\MBTFIX\MBTFIXSimulator.cs:line 481
Вот строка 481:
if( trace) log.Trace("Sending tick: " + tick);
Но эта строка - просто сообщение журнала и не может каким-либо возможным способомвызовите System.Threading.ThreadHelper.ThreadStart ().Так как же существует эта безумная трассировка стека?
at TickZoom.MBTFIX.MBTFIXSimulator.OnTick(Message quoteMessage, SymbolInfo symbol, Tick tick) in C:\Local\TickZoom\Project\Public\Providers\MBTFIX\MBTFIXProvider\MBTFIX\MBTFIXSimulator.cs:line 479
at TickZoom.FIX.FIXServerSymbolHandler.ProcessOnTickCallBack() in C:\Local\TickZoom\Project\Public\Providers\Common\ProviderUtil\FIX\FIXServerSymbolHandler.cs:line 301
at TickZoom.Threading.TaskLoop.Run() in C:\Local\TickZoom\Project\Engine\Parallel\TaskBase.cs:line 669
at TickZoom.Threading.TaskBase.Execute(ThreadInfo thread) in C:\Local\TickZoom\Project\Engine\Parallel\TaskBase.cs:line 213
at TickZoom.Threading.ParallelManager.ExecuteTasks(ThreadInfo thread) in C:\Local\TickZoom\Project\Engine\Parallel\ParallelManager.cs:line 685
at TickZoom.Threading.ParallelManager.Run() in C:\Local\TickZoom\Project\Engine\Parallel\ParallelManager.cs:line 632
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
at TickZoom.MBTFIX.MBTFIXSimulator.OnTick(Message quoteMessage, SymbolInfo symbol, Tick tick) in C:\Local\TickZoom\Project\Public\Providers\MBTFIX\MBTFIXProvider\MBTFIX\MBTFIXSimulator.cs:line 481
at TickZoom.FIX.FIXServerSymbolHandler.ProcessOnTickCallBack() in C:\Local\TickZoom\Project\Public\Providers\Common\ProviderUtil\FIX\FIXServerSymbolHandler.cs:line 301
at TickZoom.Threading.TaskLoop.Run() in C:\Local\TickZoom\Project\Engine\Parallel\TaskBase.cs:line 669
at TickZoom.Threading.TaskBase.Execute(ThreadInfo thread) in C:\Local\TickZoom\Project\Engine\Parallel\TaskBase.cs:line 213