mirror of
https://github.com/vdemydiuk/mtapi.git
synced 2026-07-28 11:07:48 +00:00
91 lines
2.5 KiB
C#
91 lines
2.5 KiB
C#
using System.Timers;
|
|
|
|
namespace MtApi.Monitors
|
|
{
|
|
public class TimerTradeMonitor : TradeMonitor
|
|
{
|
|
#region Fields
|
|
private readonly Timer _timer = new Timer();
|
|
#endregion
|
|
|
|
#region ctor
|
|
public TimerTradeMonitor(MtApiClient apiClient)
|
|
: base(apiClient)
|
|
{
|
|
_timer.Interval = 10000; //default interval 10 sec
|
|
_timer.Elapsed += _timer_Elapsed;
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region Public Methods
|
|
//
|
|
// Summary:
|
|
// Gets or sets the interval, expressed in milliseconds, at which to check orders
|
|
//
|
|
// Returns:
|
|
// The time, in milliseconds, between checking events. The value
|
|
// must be greater than zero, and less than or equal to System.Int32.MaxValue.
|
|
// The default is 10000 milliseconds.
|
|
//
|
|
// Exceptions:
|
|
// T:System.ArgumentException:
|
|
// The interval is less than or equal to zero.-or-The interval is greater than System.Int32.MaxValue,
|
|
// and the PositionMonitor is currently started.
|
|
public double Interval
|
|
{
|
|
get { return _timer.Interval; }
|
|
set { _timer.Interval = value; }
|
|
}
|
|
|
|
//
|
|
// Summary:
|
|
// Gets a value indicating whether the PositionMonitor should raise checking orders
|
|
//
|
|
// Returns:
|
|
// true if TimerTradeMonitor should check orders
|
|
// otherwise, false.
|
|
public override bool IsStarted
|
|
{
|
|
get { return _timer.Enabled; }
|
|
}
|
|
#endregion
|
|
|
|
#region Protected Methods
|
|
protected override void OnStart()
|
|
{
|
|
if (IsMtConnected)
|
|
{
|
|
_timer.Start();
|
|
}
|
|
}
|
|
|
|
protected override void OnStop()
|
|
{
|
|
_timer.Stop();
|
|
}
|
|
|
|
protected override void OnMtConnected()
|
|
{
|
|
_timer.Start();
|
|
}
|
|
|
|
protected override void OnMtDisconnected()
|
|
{
|
|
_timer.Stop();
|
|
}
|
|
#endregion
|
|
|
|
#region Private Methods
|
|
private void _timer_Elapsed(object sender, ElapsedEventArgs e)
|
|
{
|
|
_timer.Elapsed -= _timer_Elapsed; //unregister from events to prevent rise condition during work with orders
|
|
|
|
Check();
|
|
|
|
_timer.Elapsed += _timer_Elapsed; //register again
|
|
}
|
|
#endregion
|
|
}
|
|
}
|