スレッドセーフティ
cTraderがアルゴリズムを実行する方法
cTraderは各インジケーターまたはcBotを、cTrader Windowsのメインプロセスから分離された別のサブプロセスで実行します。 つまり、インジケーターとcBotの新しいインスタンスはすべて別々のプロセスで実行されます。
このアプローチにより、cTraderは別々のプロセスにコードアクセス制限を課すことができ、安全性と安定性が向上します。
さらに、個別のインジケーターまたはcBotプロセスは、cTrader Windowsのメインプロセスとリソースを共有しません。 インジケーターやcBotに問題が発生しても、その問題がcTrader自体に影響を与えることはありません。
メソッドとスレッドセーフティ
APIのメソッドのうち、スレッドセーフ(任意のスレッドから呼び出し可能)なものはごくわずかです。 それ以外はすべてcBotまたはインジケーターのメインスレッドで実行する必要があります。
メインスレッドでコードを実行する
cBotまたはインジケーターのメインスレッドで何かを実行するには、BeginInvokeOnMainThread()メソッドを使用します。 このメソッドはアクションデリゲートを受け取り、実行中の任意のスレッドから呼び出すことができます。
インスタンス間でデータを共有する
各インジケーターまたはcBotインスタンスは単一の子プロセスで実行されるため、静的プロパティまたはフィールドを使用して、同じcBotまたはインジケーターの異なるインスタンス間でデータを共有できます。