Подвисает OnProcess

Подвисает OnProcess
Atom
8/8/2012


Den

Avatar
Уважаемые разработчики!

Quik 6.02, 6.3

В S# 4.1.2, 4.1.3(rev 18591) стабильно подвисает OnProcess если делаю вызовы в GUI.

Схема такая:

1. TimeFrameStrategy c интервалом 50ms.
2. В OnProcess делаются расчеты и результат показывается в GUI через вызов
в MainWindow.Instance.GuiAsync где делается апдейт а-ля TextField = value.

При прохождении от 1000 до 10000 циклов все подвисает.
Если вызовы в GUI закомментировать стратегия не виснет.

Еще она зависает периодически после вызовов addLog...

В 3.x, 4.0, 4.1 стратегии пахали весь тороговый день с 10.00 до 23.50 без проблем.

С чем это может быть связано, что можете посоветовать?

Tags:


Thanks:


< 1 2 
ra81

Avatar
Date: 8/14/2012
Reply


Den Go to
Mikhail Sukhov Go to
Den Go to
Если в трейсах нет моего кода как мне разобраться?


В трейсах всегда должен быть код. В т.ч. и ваш. Думаю не там смотрите.


Я смотрю закладку Threads. А потом для всех тредов смотрю Call Stack. Ничего нет.
Если в OnProcess поставлю Sleep и нажму на паузу - тогда в стеке есть мой код.

Буду благодарен, если расскажете что я делаю не так и как правильно.
Я вообще java developer, а C# по аналогии юзаю :)


На вкладке с тредами, где написан статус треда, тыкнуть на стрелочку вниз и развернется последовательность вызовов. То есть что было вызвано до текущего лока. Вот собственно если посмотреть эти последовательности, можно определить где собственно затык случился.

ПС: судя по тому что вижу, каждый стакан по инструменту прет в отдельном треде, это интересно.
Thanks:

Den

Avatar
Date: 8/14/2012
Reply


ra81 Go to
Den Go to
Mikhail Sukhov Go to
Den Go to
Если в трейсах нет моего кода как мне разобраться?


В трейсах всегда должен быть код. В т.ч. и ваш. Думаю не там смотрите.


Я смотрю закладку Threads. А потом для всех тредов смотрю Call Stack. Ничего нет.
Если в OnProcess поставлю Sleep и нажму на паузу - тогда в стеке есть мой код.

Буду благодарен, если расскажете что я делаю не так и как правильно.
Я вообще java developer, а C# по аналогии юзаю :)


На вкладке с тредами, где написан статус треда, тыкнуть на стрелочку вниз и развернется последовательность вызовов. То есть что было вызвано до текущего лока. Вот собственно если посмотреть эти последовательности, можно определить где собственно затык случился.


Ну именно так я и делал.
[External Code] было мне ответом...)
Thanks:

ra81

Avatar
Date: 8/15/2012
Reply


Den


Ну именно так я и делал.
[External Code] было мне ответом...)


Экспресс версия студии чтоли? Тока в ней все порезано почикано, что ничего не сделать толком.
Thanks:

Den

Avatar
Date: 8/15/2012
Reply


ra81 Go to
Den


Ну именно так я и делал.
[External Code] было мне ответом...)


Экспресс версия студии чтоли? Тока в ней все порезано почикано, что ничего не сделать толком.


Нормальная студия. Когда я ставлю брейк или Sleep в своем коде, то показывыется стек
с вызовами в моем коде на одном из тредов. На всех остальных [External Code].

Когда все подвисает как я описал в самом начале, на всех тредах наблюдаю [External Code].
Thanks:

ra81

Avatar
Date: 8/16/2012
Reply


Den Go to
ra81 Go to
Den


Ну именно так я и делал.
[External Code] было мне ответом...)


Экспресс версия студии чтоли? Тока в ней все порезано почикано, что ничего не сделать толком.


Нормальная студия. Когда я ставлю брейк или Sleep в своем коде, то показывыется стек
с вызовами в моем коде на одном из тредов. На всех остальных [External Code].

Когда все подвисает как я описал в самом начале, на всех тредах наблюдаю [External Code].


Вообще даже если код не собственный стек показывается. Включая стокшарп вызовы. Тока так крякозябры. Режим дебаг? Я даж не знаю что предположить :)
Thanks: Den

Den

Avatar
Date: 8/16/2012
Reply


ra81 Go to
Den Go to
ra81 Go to
Den


Ну именно так я и делал.
[External Code] было мне ответом...)


Экспресс версия студии чтоли? Тока в ней все порезано почикано, что ничего не сделать толком.


Нормальная студия. Когда я ставлю брейк или Sleep в своем коде, то показывыется стек
с вызовами в моем коде на одном из тредов. На всех остальных [External Code].

Когда все подвисает как я описал в самом начале, на всех тредах наблюдаю [External Code].


Вообще даже если код не собственный стек показывается. Включая стокшарп вызовы. Тока так крякозябры. Режим дебаг? Я даж не знаю что предположить :)


А вот это была очень полезная информация. Я просто об этом не знал :)
Спасибо!

Сразу нарыл решение на stackoverflow:

Go into Tools | Options | Debugging | General, and uncheck the "Enable Just My Code" checkbox. Now Visual Studio will show the full call stack (at least for managed code, you still may see some "native to managed transitions" in there).
Thanks:
< 1 2 

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy