当前位置: 首页 > news >正文

C# App.xaml.cs的一些操作

一、保证只有一个进程

1.1 关闭旧的,打开新的

   protected override void OnStartup(StartupEventArgs e) {base.OnStartup(e);var process =Process.GetProcessesByName("Dog");if (process.Count() > 1) {var list = process.ToList();list.Sort((p1,p2)=>p1.StartTime.CompareTo(p2.StartTime));list[0].Kill();}}

1.2 程序打开后不再打开新程序

 protected override void OnStartup(StartupEventArgs e) {base.OnStartup(e);var process =Process.GetProcessesByName("Dog");if (process.Count() > 1) {MessageBox.Show("已经打开一个程序");Process.GetCurrentProcess().Kill();}}

二、异常捕捉

   public App(){//注册全局事件AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;DispatcherUnhandledException += App_DispatcherUnhandledException;TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;}private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs args){const string msg = "主线程异常";try{if (args.ExceptionObject is Exception && Dispatcher != null){Dispatcher.Invoke(() =>{Exception ex = (Exception)args.ExceptionObject;HandleException(msg, ex);});}}catch (Exception ex){HandleException(msg, ex);}}private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs args){const string msg = "子线程异常";try{HandleException(msg, args.Exception);args.Handled = true;}catch (Exception ex){HandleException(msg, ex);}}private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs args){const string msg = "异步异常";try{HandleException(msg, args.Exception);args.SetObserved();}catch (Exception ex){HandleException(msg, ex);}}private void HandleException(string msg, Exception ex){MessageBox.Show(ex.Message,msg);}
http://www.lryc.cn/news/185368.html

相关文章:

  • 【ORACLE】ORA-00972:标识符过长
  • 【Vue】Vue快速入门、Vue常用指令、Vue的生命周期
  • Pandas 数据处理 类别数据和数值数据
  • Android攻城狮学鸿蒙 -- 点击事件
  • jmeter性能测试常见的一些问题
  • 利用国外 vps 为 switch 设置代理服务器加速游戏下载
  • 云计算安全的新挑战:零信任架构的应用
  • 基于SSM的药房药品采购集中管理系统的设计与实现
  • 【GIT版本控制】--远程仓库
  • 1:Allotment,2:FeeSell,3:混合Allotment+FreeSell
  • NFT Insider#110:The Sandbox与TB Media Global合作,YGG Web3游戏峰会阵容揭晓
  • 在硅云上主机搭建wordpress并使用Astra主题和avada主题
  • 基于SSM+Vue的物流管理系统的设计与实现
  • 【洛谷】P1114 “非常男女”计划
  • list中符合 多条件中筛选符合条件的值
  • Amber中的信息传递——章节1.2-第三部分
  • 【嵌入式】常用串口协议与转换芯片详解
  • 缓存与数据库双写一致性问题解决方案
  • Java中的transient关键字是什么意思?
  • 内存溢出和内存泄漏
  • Java数组:没错,不装了我就是书架。
  • 轻量级接口自动化测试框架
  • .some方法、vh、多列布局、DNS域名解析过程、空页面文字内容渲染
  • Eclipse iceoryx™ - 真正的零拷贝进程间通信
  • 【C++】面向对象编程(二)面向对象的编程思维:virtual虚拟调用、继承、protected成员、派生类与基类
  • 【古谷彻】算法模板(更新ing···)
  • Day-06 基于 Docker 安装 Nginx 镜像
  • k8s集群-7 service
  • JS进阶-防抖和节流
  • 踩坑日记 uniapp 底部 tabber遮挡住购物车结算