// ********************************************************************** public MainForm() { InitializeComponent(); server = new XlDdeServer(service); // Создадим и зарегистрируем обработчики передаваемых Квиком данных // для каждого нашего DDE канала. tradesChannel = new TradesChannel(); quotesChannel = new QuotesChannel(); tradesChannel.ConversationAdded += TradesConversationsChanged; tradesChannel.ConversationRemoved += TradesConversationsChanged; quotesChannel.ConversationAdded += QuotesConversationsChanged; quotesChannel.ConversationRemoved += QuotesConversationsChanged; server.AddChannel(tradesChannel); server.AddChannel(quotesChannel); // Зарегистрируем сам DDE сервер. server.Register(); // Таймер updater = new Timer(); updater.Interval = 100; // мс, этим значением не стоит злоупотреблять. // если нужна большая скорость обновления, то минимально разумное // значение - 15 мс. Меньше не имеет смысла, как с технической точки // зрения, так и с физиологической для человека. updater.Tick += new EventHandler(UpdaterTick); updater.Start(); }
// ********************************************************************** // * EntryPoint * // ********************************************************************** static void Main() { using(XlDdeServer server = new XlDdeServer(service)) { // Создадим и зарегистрируем обработчики передаваемых Квиком данных // для каждого нашего DDE канала. server.AddChannel(new TradesChannel()); server.AddChannel(new QuotesChannel()); // Зарегистрируем сам DDE сервер. server.Register(); // Теперь DDE сервер готов к работе и каждый раз при поступлении // данных он будет передавать их методу ProcessTable() в // соответствующем каналу экземпляре класса. Console.WriteLine("DDE server ready. Press Enter to exit.\n\n"); Console.ReadLine(); } }