如何设置通话之间的时间

时间:2017-07-12 23:59:55

标签: c#

IB有规则,我在2秒内无法运行超过6个这样的呼叫。我一直在考虑起搏规则,需要找到一个解决方法。我可以将方法调用(Historicaldata)保存为对象并定期调用它吗? 我有多个调用此方法的线程,需要找到一个解决方案,在每6次连续调用的调用ibClient.ClientSocket.reqHistoricalData之间暂停。

private void Historicaldata(int tickerId, Contract contract, string endDateTime,
        string durationString, string barSizeSetting, string whatToShow, int useRTH, int formatDate, List<TagValue> chartOptions)
    {
        ibClient.ClientSocket.reqHistoricalData(tickerId, contract, endDateTime, durationString, barSizeSetting, whatToShow, useRTH, formatDate, null);
    }

1 个答案:

答案 0 :(得分:0)

您可以使用ConcurrentQueue创建一个包含参数的类。

创建课程时,您可以启动一个每2/6秒触发一次的计时器。

计时器回叫可以检查队列中是否有任何项目,如果是,请进行方法调用。

或者,您可以将队列添加到队列中,计时器可以调用委托。