internal void HandleActionWithMetrics(UIElement element, Action action, string eventName = null)
        {
            if (element != null)
            {
                element.IsEnabled = false;
            }

            Task.Run(() =>
            {
                long elapsedTime = 0;

                HandleException(
                    () => elapsedTime = StopWatch.Get(() => action()),
                    () => ChangeControl(() =>
                {
                    if (eventName != null)
                    {
                        tbWatchingEvent.Text = String.Format("{0} ({1} ms)", eventName, elapsedTime);
                    }
                    if (element != null)
                    {
                        element.IsEnabled = true;
                    }
                }));
            });
        }
        private void OnAuthPassed(object s, EventArgs e)
        {
            if (s == null)
            {
                Error("Authorization failed");
                return;
            }
            HandleException(() =>
            {
                var elapsedMs = StopWatch.Get(() => BtxAccount = _controller.GetAccountName());
                _controller.SetBitmexSettings(BtxAccount.Id);

                ChangeControl(() =>
                {
                    HandleException(() =>
                    {
                        foreach (var ctrl in _posControls)
                        {
                            ctrl.Value.InitPositionWatcher(BtxAccount, _controller.Instruments);
                        }
                        lblBtxAccount.Content    = BtxAccount.UserName;
                        tbWatchingEvent.Text     = String.Format("ACCOUNT ({0} ms)", elapsedMs);
                        datePicker1.SelectedDate = DateTime.Now.Date;

                        LoadDailyTrades();
                        _controller.SubscribeTopics();
                    });
                });
            });
        }
        internal void CancelOrder(string orderId)
        {
            long elapsedTime = 0;

            Task.Run(() => HandleException(
                         () => elapsedTime = StopWatch.Get(() => _controller.CancelOrders(orderId)),
                         () => ChangeControl(() => tbWatchingEvent.Text = String.Format("DEL ORD ({0} ms)", elapsedTime))
                         ));
        }