• wpf 异常处理和关闭进程


    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Windows;
    using System.Diagnostics;
    using System.Data.SqlClient;
    
    namespace wpf
    {
        /// <summary>
        /// App.xaml 的交互逻辑
        /// </summary>
        public partial class App : Application
        {
            public static System.Threading.Mutex Run;
    
            protected override void OnStartup(StartupEventArgs e)
            {
                //注册事件
                Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException;
                base.OnStartup(e);
                bool noRun = false;
                try
                {
                    //判断是否在运行
                    Run = new System.Threading.Mutex(true, Process.GetCurrentProcess().ProcessName, out noRun);
                    if (noRun)
                    {
                        //获取进程名
                        Process[] localByName = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
                        Run.ReleaseMutex();
                        //项目中配置文件中的信息
                        string path = ConfigurationManager.ConnectionStrings["conn"].ToString();
                        //判断数据的连接
                        SqlConnection con = new SqlConnection(path);
                        try
                        {
                            con.Open();
                            if (con.State == ConnectionState.Open)
                            {
                                new Login().Show();
                            }
                            else
                            {
                                MessageBox.Show("数据库连接失败!", "信息提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                Application.Current.Shutdown();
                            }
                        }
                        catch (Exception q)
                        {
                            MessageBox.Show("数据库连接失败!", "信息提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                            Application.Current.Shutdown();
                        }
    
                    }
                    else
                    {
                        MessageBox.Show("程序已在运行!", "信息提示", MessageBoxButton.OK, MessageBoxImage.Information);
                        //Application.Current.Shutdown();
                     //  string proName=  Process.GetCurrentProcess().ProcessName;
                       
                    }
                }
                catch (Exception q)
                {
                    MessageBox.Show("数据库连接失败!", "信息提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                    Application.Current.Shutdown();
                }
            }
            /// <summary>
            /// 程序未知的异常的方法事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void Current_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
            {
                MessageBox.Show("我们很抱歉,当前应用程序遇到一些问题,该操作已经终止,请重新启动.", "意外的操作", MessageBoxButton.OK, MessageBoxImage.Information);//这里通常需要给用户一些较为友好的提示,并且后续可能的操作
                Application.Current.Shutdown();
                //string proName = Process.GetCurrentProcess().ProcessName;
               // Process[] localByName = Process.GetProcessesByName(proName);//因为可以同时启动多
                e.Handled = true;//使用这一行代码告诉运行时,该异常被处理了,不再作为UnhandledException抛出了。
            }
            /// <summary>
            /// 根据进程名称进行关闭进程
            /// </summary>
            /// <param name="procesName"></param>
            public void killPro(string procesName)
            {
    
                try
                {
                    foreach (System.Diagnostics.Process Pro in System.Diagnostics.Process.GetProcessesByName(procesName))
                    {
                        if (!Pro.CloseMainWindow())
                        {
                            Pro.Kill();
                        }
                    }
    
                }
                catch { }
            }
        }
    }
  • 相关阅读:
    Python中修改字符串的四种方法
    一些有用的资源分享(工具+电子书)
    什么是DFX测试
    测试笔,测试纸杯
    测试用例八大要素
    软件测试的16种测试类型
    python作业(二)
    python作业(一)
    菜鸟学python(第一天)函数及模块使用
    [Spring MVC]
  • 原文地址:https://www.cnblogs.com/tianyiwuying/p/4936430.html
Copyright © 2020-2023  润新知