Подвисает OnProcess

Подвисает OnProcess
Atom
8/8/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 без проблем.

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


Tags:


Thanks:


1 2  >
Mikhail Sukhov

Avatar
Date: 8/8/2012
Reply


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

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

Thanks:

ra81

Avatar
Date: 8/8/2012
Reply


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

Thanks:

Den

Avatar
Date: 8/8/2012
Reply


Mikhail Sukhov:

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

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

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

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

Thanks:

Den

Avatar
Date: 8/8/2012
Reply


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

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

Thanks:

ra81

Avatar
Date: 8/9/2012
Reply


Den:

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

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

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

Thanks:

Den

Avatar
Date: 8/9/2012
Reply


Den:

Mikhail Sukhov:

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

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

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

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

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

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

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

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

Thanks:

Alexander

Avatar
Date: 8/10/2012
Reply


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

Thanks:

Den

Avatar
Date: 8/13/2012
Reply


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

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

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

Thanks:

Mikhail Sukhov

Avatar
Date: 8/13/2012
Reply


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

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

Thanks:

Den

Avatar
Date: 8/13/2012
Reply


Mikhail Sukhov:

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

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

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

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

Thanks:
1 2  >

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

loading
clippy