Потокобезопасность
Как cTrader запускает алгоритмы
cTrader запускает каждый индикатор или сиБота в отдельном подпроцессе, изолированном от основного процесса cTrader Windows. Это означает, что все новые экземпляры индикаторов и сиБотов работают в отдельных процессах.
Такой подход позволяет cTrader налагать ограничения доступа к коду на отдельные процессы, повышая безопасность и стабильность.
Кроме того, отдельные процессы индикаторов или сиБотов не разделяют свои ресурсы с основным процессом cTrader Windows. Если что-то пойдет не так с индикатором или сиБотом, основная проблема не повлияет на сам cTrader.
Методы и потокобезопасность
Только несколько методов в API являются потокобезопасными, то есть вы можете вызывать их из любого потока. Все остальное должно выполняться в основном потоке сиБота или индикатора.
Выполнение кода в основном потоке
Чтобы запустить что-либо в основном потоке сиБота или индикатора, используйте метод BeginInvokeOnMainThread(). Он принимает делегат действия, и вы можете вызвать его из любого запущенного потока.
Обмен данными между экземплярами
Поскольку каждый экземпляр индикатора или сиБота работает в одном дочернем процессе, вы можете использовать статические свойства или поля для обмена данными между различными экземплярами одного и того же сиБота или индикатора.