コード例 #1
0
        private void LoginBtn_Click(object sender, RoutedEventArgs e)
        {
            LoginBtn.IsEnabled      = false;
            LoadingPanel.Visibility = Visibility.Visible;
            LoginStateObject stateObject = new LoginStateObject
            {
                UserName    = UserNameText.Text.Trim(),
                Password    = PasswordText.Password.Trim(),
                dataManager = DataManager.dataManager
            };

            ThreadPool.QueueUserWorkItem(LoadingProcedure, stateObject);
        }
コード例 #2
0
        private void LoadingProcedure(object state)
        {
            LoginStateObject stateObject = state as LoginStateObject;

            try
            {
                this.Dispatcher.BeginInvoke((Action)(() =>
                {
                    LoadingText.Text = "用户正在登录...";
                }));
                string message = null;
                if (!LoginDeal.DealLogin(stateObject.UserName, stateObject.Password, appLog, ref message))
                {
                    this.Dispatcher.BeginInvoke((Action)(() =>
                    {
                        LoginBtn.IsEnabled = true;
                        LoadingPanel.Visibility = Visibility.Collapsed;
                        MessageBox.Show(message, "消息", MessageBoxButton.OK, MessageBoxImage.Warning);
                    }));
                }
                else
                {
                    this.Dispatcher.BeginInvoke((Action)(() =>
                    {
                        LoadingText.Text = "正在加载数据...";
                    }));

                    stateObject.dataManager.BeginLoadData();
                    stateObject.dataManager.CurUserName = stateObject.UserName;

                    this.Dispatcher.BeginInvoke((Action)(() =>
                    {
                        LoadingPanel.Visibility = Visibility.Collapsed;
                        this.DialogResult = true;
                        this.Close();
                    }));
                }
            }
            catch (Exception ex)
            {
                appLog.InfoFormat("Load Data Error:{0}", ex.Message + ex.StackTrace);
                this.Dispatcher.BeginInvoke((Action)(() =>
                {
                    LoginBtn.IsEnabled = true;
                    LoadingPanel.Visibility = Visibility.Collapsed;
                    MessageBox.Show("抱歉,操作发生异常,请重试.");
                }));
            }
        }