Witam !
Jak każdy na tym forum piszę program i napotkałem pewien problem którego nie potrafię sam rozwiązać.
Chcę stworzyć dwa obiekty przy starcie programu które będą używane przez cały okres jego działania. Zależy mi aby obiekty były dostępne z każdego miejsca programu. Program zawiera więcej funkcji ale okroiłem go żeby pokazać o co mi chodzi.
Problemem jest obiekt MT i dde. Na początku obiekty tworzyłem w odrębnej funkcji jednak znikały one po opuszczeniu jej bloku. Przypuszczam że zadziałał tu GarbageCollector. Dlatego też umieściłem ich tworzenie na samym początku programu. Rozwiązanie działa, tylko jak dodać obsługę wyjątków dla tych obiektów ? Przypuszczam że cały program źle projektuję. Może mi ktoś doradzić jak zrobić to po „fachowemu” ?
namespace mojProgram
{
public partial class Form1 : Form
{
public int tickCount = 0;
PointPairList list = new PointPairList();
MetaTraderDde dde = new MetaTraderDde("");
MetaTrader MT = new MetaTrader(null, 0);
public Form1()
{
InitializeComponent();
CreateChart(zg1);
string symbol = "EURUSD";
dde.OnQuote += new EventHandler<QuoteEventArgs>(MT_OnQuote);
dde.Connect();
dde.Subscribe(symbol);
}
private void MT_OnQuote(object sender, QuoteEventArgs args)
{
Console.WriteLine(args.Symbol + " " + args.Bid + " " + args.Ask);
this.Invoke((MethodInvoker)delegate { bidAskLabel.Text = (args.Bid.ToString() + " / " + args.Ask.ToString()); });
list.Add(tickCount, args.Bid);
tickCount++;
GraphPane myPane = zg1.GraphPane;
myPane.CurveList.Clear();
LineItem curve = myPane.AddCurve("label", list, Color.DarkRed, SymbolType.None);
curve.Line.Width = 1.5F;
myPane.AxisChange();
this.Invoke((MethodInvoker)delegate { Refresh(); });
}
}
}