Подвисает OnProcess
Atom
08.08.2012
Den


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

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 без проблем.

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

Теги:


Спасибо:


1 2  >
Mikhail Sukhov

Фотография
Дата: 08.08.2012
Ответить


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


Поизучать стек трейсы на предмет дедлоков.
Спасибо:

ra81

Фотография
Дата: 08.08.2012
Ответить


Да подобная беда была у меня как-то раз именно из за дедлоков. Лочилось окошко лога и дальше весь поток тоже лочился.
Спасибо:

Den

Фотография
Дата: 08.08.2012
Ответить


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


Поизучать стек трейсы на предмет дедлоков.


А нету трейсов в моем роботе. Все треды от S#, в них стэк не кажется...

У меня код не менялся...
А что вы поменяли в тредах начиная с 4.1.2?
Спасибо:

Den

Фотография
Дата: 08.08.2012
Ответить


ra81
Да подобная беда была у меня как-то раз именно из за дедлоков. Лочилось окошко лога и дальше весь поток тоже лочился.


на чем оно лочилось, как избавились?
Спасибо:

ra81

Фотография
Дата: 09.08.2012
Ответить


Den
ra81
Да подобная беда была у меня как-то раз именно из за дедлоков. Лочилось окошко лога и дальше весь поток тоже лочился.


на чем оно лочилось, как избавились?


Ну там длинная замута была достаточно. Чисто в коде моего коннектора.
http://stocksharp.com/fo...a-v-mietodie-AddInfoLog/
Спасибо:

Den

Фотография
Дата: 09.08.2012
Ответить


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


Поизучать стек трейсы на предмет дедлоков.


А нету трейсов в моем роботе. Все треды от S#, в них стэк не кажется...

У меня код не менялся...
А что вы поменяли в тредах начиная с 4.1.2?


Лочится еще при вызове логгинга из TimeFrameStrategy.Process в ConsoleLogListener.
В моем коде нет никаких Wait'ов, Sleep'ов и т.д. У меня не начем лочиться.
Похоже это нутро S# лочится...

Вот картинка с тредами, но стек трейса ни у одного не достать:



Как дебажить дальше?

P.S. может быть имеет смысл давать имя тредам по имени стратегий, кот. они вызывают?
Понял, что на каждый вызов OnProcess из пула берется новый тред.
Спасибо:

Alexander

Фотография
Дата: 10.08.2012
Ответить


В итоге разобрались или нет?
Если нет - попробуйте пустой OnProcess только с работой с gui.
Спасибо:

Den

Фотография
Дата: 13.08.2012
Ответить


Alexander Mukhanchikov
В итоге разобрались или нет?
Если нет - попробуйте пустой OnProcess только с работой с gui.


Не разобрался. Если в трейсах нет моего кода как мне разобраться?

Пока, действительно, остается минизировать кейс.
Спасибо:

Mikhail Sukhov

Фотография
Дата: 13.08.2012
Ответить


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


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

Den

Фотография
Дата: 13.08.2012
Ответить


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


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


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

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

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy