Code: //MyTimer 可以额外传递品种,用于ATSCross public class MyTimer: System.Timers.Timer { public MyTimer() { } public string Symbol; } myTimer.AutoReset=false; myTimer.Elapsed+=OnTimedEvent; public void OnTimedEvent(object source, ElapsedEventArgs e) { MyTimer timer=source as MyTimer; string Symbol=timer.Symbol; OrderBookList.Add(InstrumentManager.Instruments[Symbol].OrderBook); // do sth; } //订阅MarketDepth事件 InstrumentManager.Instruments[WarrantSymbol].NewMarketDepth+=OnMarketDepth public void OnMarketDepth(object sender, MarketDepthEventArgs arg) { timer.Interval=10;//考虑timer的精度是1毫秒 timer.Enabled=true; } 测试效果是,20个品种,timer.interval 选2毫秒没有问题,每个品种对应10个marketdepth到来的时间不过1毫秒。 目前的问题是,每个品种,都要单独开一个timer在backpool线程。所以2000个品种,就要开2000个线程。希望大家提供更好的方法。