ltrimAndrey R.Это то понятно, что событие OnProcess вызывается через заданный интервал. Меня интересует как сделать так, чтобы это событие вызывалось на каждом тике, не чаще и не реже.
strategy.Interval = TimeSpan.FromTicks(1)
Думаю, что это не то, что хотел автор треда. Мне так кажется, что он имеет в виду тики Квика или чего-то другого.
Потому что один тик TimeSpan это 100 нс. Слишком уж часто, по-моему.
К тому же, Михаил в шедулере стратегий использует Thread.Sleep, точность которого, мягко говоря, никакая =) Потому что шедулер операционной системы оперирует квантами, которые измеряются десятками и сотнями миллисекунд. На практике ваши 100 нс округлятся до 0 мс, которые дадут вам рандомную задержку, так как в этом случае она зависит от загрузки процессора. Если нет у шедулера операционной системы готового потока, вы задержки не получите вообще, а если есть, то задержка будет рандомной и, скорее всего, кратной кванту, потому что ваш поток может получть квант не следующий и не через один, а пятый, например, потому что у шедулера системы своё мнение на тему того, какой поток должен сейчас исполняться. "Скорее всего" кратный кванту, потому что другой поток тоже может пойти поспать, в этом случае вы получите оставшуюся часть его кванта.
Вероятно, это как в том анекдоте про яблоко, "папа, ты сейчас с кем разговаривал?". Но, надеюсь, понятно хотя бы, что никаких гарантий по интервалу никто дать не может. С большими интервалами, типа секунды, погрешность 10% не критична, а вот с предложенной вами задержкой 100 нс погрешность измеряется тысячами процентов.