/// <summary> /// Task that calls method saving window position /// on disk. /// When it called - do: /// 1) Set flag _isInPosMonitoring /// (to make only one call of task). /// 2)Wait till user finish changing positions /// (we assume that user doesn't change during 500 msec) /// 3) Call saving method /// 4) Reset flag _isInPosMonitoring /// /// Called from /// 1. BaseTerminalWindow.OnUpdateWindowPosAndSize() /// 2. BaseTerminalWindow.BaseTerminalWindow_Closed /// </summary> private void TaskSaveWindowData() { const int _minChangeSaveIntervalMSec = 500; _isInPosMonitoring = true; while ((DateTime.Now - _dtLastPosChanged).TotalMilliseconds < _minChangeSaveIntervalMSec) { Thread.Sleep(100); } KernelTerminal.SaveWindowPosition(_geomWindow); _isInPosMonitoring = false; }