Объявление переменной COM - C#
Формулировка задачи:
Добрый день,
В чем разница объявления переменных?
Я использую подключенную COM библиотеку.
Спасибо
using SmartCOM4Lib; private StServerClass SmartServer; // вариант 1 private SmartCOM4Lib.StServerClass SmartServer; // вариант 2
Решение задачи: «Объявление переменной COM»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using SmartCOM4Lib;
namespace TestConnect
{
public partial class TestForm : Form
{
private delegate void UpdateErrorText(string text);
private int InfoCookie; // Индификатор приказа
private Quote LastQuote; // Котировка инструмента
private List<Bar> InfoBars; // Список баров для инструмента
//private StServerClass SmartServer; // SmartCOM
private SmartCOM4Lib.StServerClass SmartServer;
private List<Tiker> InfoTikers; // Список всех инструментов
private const string smartComParams = "logLevel=5;maxWorkerThreads=3";
private DAFWriters Writers; // Лог
// Создан ли SmartCOM
private bool IsReady { get { return (SmartServer != null); } }
// Установлено ли соединение
private bool IsConnected
{
get
{
bool bReturn = false;
if (IsReady)
{
try
{
bReturn = SmartServer.IsConnected();
}
catch (Exception)
{
}
}
return bReturn;
}
}
public TestForm()
{
Writers = new DAFWriters();
InitializeComponent();
ToDateTimePicker.Value = DateTime.Now.AddDays(-5);
ToDateTimePicker.MaxDate = DateTime.Now;
InfoBars = new List<Bar>();
InfoTikers = new List<Tiker>();
//Text += ", Version: " + Info.GetVersion;
Writers.WriteLine("Enegy", "log", "{0} Version: {1}", DateTime.Now, Info.GetVersion);
foreach (StBarInterval Interval in Enum.GetValues(typeof(StBarInterval)))
if (Interval != StBarInterval.StBarInterval_Tick)
IntervalComboBox.Items.Add(Interval.ToString());
if (IntervalComboBox.Items.Count > 0)
IntervalComboBox.SelectedIndex = 0;
}
private StBarInterval GetInterval { get { return (IntervalComboBox.SelectedIndex > -1 ? (StBarInterval)Enum.Parse(typeof(StBarInterval), IntervalComboBox.SelectedItem.ToString()) : StBarInterval.StBarInterval_1Min); } }
private void CreateButton_Click(object sender, EventArgs e)
{
Writers.WriteLine("Enegy", "log", "{0} Click: {1}", DateTime.Now, "Create");
ReDrawStatus("Create");
if (!IsReady) // если SmartCOM не создан
{
try
{
//SmartServer = new StServerClass(); // Создать и назначить обработчики событий
SmartServer = new SmartCOM4Lib.StServerClass();
SmartServer.Connected += new _IStClient_ConnectedEventHandler(SmartServer_Connected);
SmartServer.Disconnected += new _IStClient_DisconnectedEventHandler(SmartServer_Disconnected);
SmartServer.AddTick += new _IStClient_AddTickEventHandler(SmartServer_AddTick);
SmartServer.UpdateBidAsk += new _IStClient_UpdateBidAskEventHandler(SmartServer_UpdateBidAsk);
SmartServer.UpdateQuote += new _IStClient_UpdateQuoteEventHandler(SmartServer_UpdateQuote);
SmartServer.AddBar += new _IStClient_AddBarEventHandler(SmartServer_AddBar);
SmartServer.AddTickHistory += new _IStClient_AddTickHistoryEventHandler(SmartServer_AddTickHistory);
SmartServer.AddPortfolio += new _IStClient_AddPortfolioEventHandler(SmartServer_AddPortfolio);
SmartServer.UpdateOrder += new _IStClient_UpdateOrderEventHandler(SmartServer_UpdateOrder);
SmartServer.UpdatePosition += new _IStClient_UpdatePositionEventHandler(SmartServer_UpdatePosition);
SmartServer.SetPortfolio += new _IStClient_SetPortfolioEventHandler(SmartServer_SetPortfolio);
SmartServer.AddTrade += new _IStClient_AddTradeEventHandler(SmartServer_AddTrade);
SmartServer.AddSymbol += new _IStClient_AddSymbolEventHandler(SmartServer_AddSymbol);
SmartServer.SetMyClosePos += new _IStClient_SetMyClosePosEventHandler(SmartServer_SetMyClosePos);
SmartServer.SetMyOrder += new _IStClient_SetMyOrderEventHandler(SmartServer_SetMyOrder);
SmartServer.SetMyTrade += new _IStClient_SetMyTradeEventHandler(SmartServer_SetMyTrade);
SmartServer.OrderSucceeded += new _IStClient_OrderSucceededEventHandler(SmartServer_OrderSucceeded);
SmartServer.OrderFailed += new _IStClient_OrderFailedEventHandler(SmartServer_OrderFailed);
SmartServer.OrderCancelFailed += new _IStClient_OrderCancelFailedEventHandler(SmartServer_OrderCancelFailed);
SmartServer.OrderCancelSucceeded += new _IStClient_OrderCancelSucceededEventHandler(SmartServer_OrderCancelSucceeded);
SmartServer.OrderMoveFailed += new _IStClient_OrderMoveFailedEventHandler(SmartServer_OrderMoveFailed);
SmartServer.OrderMoveSucceeded += new _IStClient_OrderMoveSucceededEventHandler(SmartServer_OrderMoveSucceeded);
Writers.WriteLine("Enegy", "log", "{0} ConfigureClient {1}", DateTime.Now, smartComParams);
SmartServer.ConfigureClient(smartComParams);
Text = "Test Connect (SmartCOM version: " + SmartServer.GetStClientVersionString() + ")";
CreateButton.Enabled = false;
}
catch (COMException Error)
{
ReDrawStatus("Ошибка при создании, " + Error.Message);
return;
}
catch (Exception Error)
{
ReDrawStatus("Ошибка при создании, " + Error.Message);
return;
}
}
if (IsConnected) // если соединение установлено, вручную вызвать событие connected, для начала подписки
SmartServer_Connected();
else
ReDrawStatus(""); // иначе обновить статус соединения
}