WPF防止重复运行实例

简介: 原文:WPF防止重复运行实例1、方法一 在app.xaml.cs下添加如下代码: /// /// App.xaml 的交互逻辑 /// public partial class App : Application { System.
原文: WPF防止重复运行实例

1、方法一

在app.xaml.cs下添加如下代码:

 /// <summary>  
    /// App.xaml 的交互逻辑  
    /// </summary>  
    public partial class App : Application  
    {  
        System.Threading.Mutex mutex;  
  
        public App()  
        {  
            this.Startup += new StartupEventHandler(App_Startup);  
        }  
  
        void App_Startup(object sender, StartupEventArgs e)  
        {  
            bool ret;  
            mutex = new System.Threading.Mutex(true, "ElectronicNeedleTherapySystem", out ret);  
  
            if (!ret)  
            {  
                MessageBox.Show("已有一个程序实例运行");  
                Environment.Exit(0);  
            }  
  
        }  
    }  

  二、方法二

1.通过查找process的方法来控制应用程序启动。
PS:这个方法有bug:在多用户登录后,只有一个用户可以正常启动程序,也就是说,进程是跨用户的。
[java] view plain copy
int processCount = Process.GetProcessesByName("windowWPF").Where(o => o.Id != Process.GetCurrentProcess().Id).Count();  
if (processCount > 1)  
    Environment.Exit(0);  
2. 注意mutex不能被回收,否则就无法发挥作用了。
[java] view plain copy
bool ret;    
using (System.Threading.Mutex  mutex = new System.Threading.Mutex(true, "WpfMuerterrrterterttex", out ret))    
{    
    if (!ret)    
        Environment.Exit(0);    
}    

  

 

  1.  /// <summary>  
  2.     /// App.xaml 的交互逻辑  
  3.     /// </summary>  
  4.     public partial class App : Application  
  5.     {  
  6.         System.Threading.Mutex mutex;  
  7.   
  8.         public App()  
  9.         {  
  10.             this.Startup += new StartupEventHandler(App_Startup);  
  11.         }  
  12.   
  13.         void App_Startup(object sender, StartupEventArgs e)  
  14.         {  
  15.             bool ret;  
  16.             mutex = new System.Threading.Mutex(true"ElectronicNeedleTherapySystem", out ret);  
  17.   
  18.             if (!ret)  
  19.             {  
  20.                 MessageBox.Show("已有一个程序实例运行");  
  21.                 Environment.Exit(0);  
  22.             }  
  23.   
  24.         }  
  25.     }  
目录
相关文章
|
3月前
|
C# UED 开发者
WPF与性能优化:掌握这些核心技巧,让你的应用从卡顿到丝滑,彻底告别延迟,实现响应速度质的飞跃——从布局到动画全面剖析与实例演示
【8月更文挑战第31天】本文通过对比优化前后的方法,详细探讨了提升WPF应用响应速度的策略。文章首先分析了常见的性能瓶颈,如复杂的XAML布局、耗时的事件处理、不当的数据绑定及繁重的动画效果。接着,通过具体示例展示了如何简化XAML结构、使用后台线程处理事件、调整数据绑定设置以及利用DirectX优化动画,从而有效提升应用性能。通过这些优化措施,WPF应用将更加流畅,用户体验也将得到显著改善。
225 1
C#WPF 图片在显示时没有问题,但在运行时图片显示不出来的解决
选中项目,点击右上角的显示全部文件按钮,会将默认隐藏的文件显示出来,选中所需图片,右键,添加到项目,然后选择图片查看属性,生成操作选择resource。完毕。本人目前的解决方案。
444 41
C#WPF 图片在显示时没有问题,但在运行时图片显示不出来的解决
|
C#
WPF防止程序多次运行
WPF防止程序多次运行
220 0
WPF界面异常:未将对象引用设置到对象实例
WPF界面异常:未将对象引用设置到对象实例
|
C# 前端开发
WPF中的多进程(Threading)处理实例(一)
原文:WPF中的多进程(Threading)处理实例(一) 说明:希望通过揣摩这些案例,能进一步了解进程的工作原理。 1.方法一描述的是在同一窗口中,在计算素数的同时而不影响Canvas的工作。 方法1 1 #region Long-Running Calculat...
1580 0
|
C# 索引
WPF中元素拖拽的两个实例
原文:WPF中元素拖拽的两个实例   今天结合之前做过的一些拖拽的例子来对这个方面进行一些总结,这里主要用两个例子来说明在WPF中如何使用拖拽进行操作,元素拖拽是一个常见的操作,第一个拖拽的例子是将ListBox中的子元素拖拽到ListView的某一个节点,从而将该子元素作为当前节点的子节点。
1191 0
|
C#
WPF和Expression Blend开发实例:Adorner(装饰器)应用实例
原文:WPF和Expression Blend开发实例:Adorner(装饰器)应用实例 装饰器-- 表示用于修饰 UIElement 的 FrameworkElement 的抽象类 简单来说就是,在不改变一个UIElement结构的情况下,将一个Visual对象加到它上面.
1035 0
|
C#
WPF和Expression Blend开发实例:充分利用Blend实现一个探照灯的效果
原文:WPF和Expression Blend开发实例:充分利用Blend实现一个探照灯的效果 本篇文章阅读的基础是在读者对于WPF有一定的了解并且有WPF相关的编码经验,对于Blend的界面布局有基础的知识.
1139 0
|
C# Windows
WPF和Expression Blend开发实例:模拟QQ登陆界面打开和关闭特效
原文:WPF和Expression Blend开发实例:模拟QQ登陆界面打开和关闭特效 不管在消费者的心中腾讯是一个怎么样的模仿者抄袭者的形象,但是腾讯在软件交互上的设计一直是一流的.正如某位已故的知名产品经理所说的:设计并非外观怎样,感觉如何.
1241 0
|
C#
WPF和Expression Blend开发实例:Loading动画
原文:WPF和Expression Blend开发实例:Loading动画 今天来点实际的,项目中可以真实使用的,一个Loading的动画,最后封装成一个控件,可以直接使用在项目中,先上图: 整个设计比较简单,就是在界面上画18个Path,然后通过动画改变OpacityMask的值来实现一种动态的效果.
1215 0