using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Timers; using System.Windows.Threading; using Tango.SharedUI; namespace Tango.MachineStudio.UI.ViewModels { public class ConnectionLostViewVM : DialogViewVM { private Timer _reconnectTimer; public String Exception { get; set; } private int _reconnectinSeconds; public int ReconnectinSeconds { get { return _reconnectinSeconds; } set { _reconnectinSeconds = value; RaisePropertyChangedAuto(); } } private bool _autoReconnect; public bool AutoReconnect { get { return _autoReconnect; } set { _autoReconnect = value; RaisePropertyChangedAuto(); } } public ConnectionLostViewVM() : base() { ReconnectinSeconds = 10; _reconnectTimer = new Timer(); _reconnectTimer.Interval = TimeSpan.FromSeconds(1).TotalMilliseconds; _reconnectTimer.Elapsed += _reconnectTimer_Elapsed; } private void _reconnectTimer_Elapsed(object sender, ElapsedEventArgs e) { ReconnectinSeconds--; if (ReconnectinSeconds == -1) { _reconnectTimer.Stop(); InvokeUI(() => { Accept(); }); } } public override void OnShow() { base.OnShow(); if (AutoReconnect) { _reconnectTimer.Start(); } } protected override void Accept() { _reconnectTimer.Stop(); base.Accept(); } protected override void Cancel() { base.Cancel(); _reconnectTimer.Stop(); } } }