`
lindexi-gd
  • 浏览: 139597 次
社区版块
存档分类
最新评论

WPF 只允许打开一个实例

 
阅读更多

我们有时候只希望我们的程序只打开一个实例,也就是我们的软件只有一次被打开。

那么我们可以通过一个办法知道,在这个软件打开前是不是打开过一个,还没关闭。也就是是否存在另一个程序在运行。
<!--more-->

下面是一个简单方法


                    // 确保不存在程序的其他实例
                    singleInstanceWatcher = new Semaphore(
                        0, // Initial count.
                        1, // Maximum count.
                        Assembly.GetExecutingAssembly().GetName().Name, out createdNew);
                    if (createdNew)
                    {
                        //之前没有运行过
                    }
                    else
                    {
                        //重复运行
                        MessageBox.Show("请不要重复运行(ノ`Д)ノ");
                        Environment.Exit(-2);
                    }

另一个方法

            string mutexName = Properties.Resources.ProgramTitle + "Mutex";
            singleInstanceWatcher = new Mutex(false, mutexName, out createdNew);
            if (!createdNew)
            {
                MessageBox.Show("程序已经运行!", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
                Environment.Exit(-1);
            }
bool createdNew;
System.Threading.Mutex instance = new System.Threading.Mutex(true, "MutexName", out createdNew);
if (createdNew)
{
    Application.Run(new LoginForm());
    instance.ReleaseMutex();
}
else
{
    Application.Exit();
}

http://www.cnblogs.com/z_lb/archive/2012/09/16/2687487.html

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    WPF单实例应用程序-一次打开一个exe

    在Windows Presentation Foundation(WPF)应用开发中,有时我们需要确保应用程序只能运行一个实例,即实现“单实例应用程序”。这样的设计可以防止用户意外打开多个相同的应用程序窗口,保持系统资源的有效利用。本...

    Winform只允许打开一个实例

    ### Winform只允许打开一个实例 在Windows Forms(Winform)应用程序开发中,有时我们希望程序只能运行一个实例,即用户不能重复启动该程序。这种需求常见于许多单例模式的应用场景,例如系统托盘程序、后台服务等...

    C#/WPF 只允许一个实例运行并将以运行实例窗体置顶

    本文将详细讲解如何使用C#和WPF(Windows Presentation Foundation)实现只允许一个实例运行的应用程序,并将已运行的实例窗口置顶。 首先,我们要了解互斥量(System.Threading.Mutex)。互斥量是一种同步对象,用于...

    WPF火焰图像特效——效果实例

    在本文中,我们将深入探讨WPF(Windows Presentation Foundation)中的火焰图像特效,这是一个适用于初学者学习的精彩实例。WPF是.NET Framework的一部分,为开发者提供了丰富的功能,用于创建具有高度图形化用户...

    WPF中打开PPT word excel

    在“OfficeFilesViewer”这个项目中,很可能是创建了一个WPF应用程序,它能以某种方式打开并显示PPT、Word和Excel文件,可能是通过Interop服务,也可能是借助第三方库。具体实现细节将取决于项目源码。为了提高效率...

    WPF登录打开WinForm主界面

    在本文中,我们将深入探讨如何使用WPF(Windows Presentation Foundation)创建一个登录界面,并通过该界面无缝地打开一个基于WinForm的主应用程序窗口。WPF是.NET Framework的一部分,提供了丰富的用户界面(UI)...

    WPF酷炫打开子窗口

    `MyForm`可能是这个项目中的一个自定义窗口类,继承自`Window`,并可能包含了特定的设计和功能。 要实现酷炫的打开效果,我们可以利用动画和效果。WPF提供了强大的动画系统,允许我们为窗口的显示和关闭添加动态...

    WPF三个经典动画实例

    这个例子展示了如何通过TranslateTransform动画改变UI元素的位置,模拟一个门打开或关闭的效果。TranslateTransform允许元素沿X轴或Y轴平移,通过设置From和To属性,我们可以让元素沿着指定路径移动。Storyboard控制...

    WPF的MVVM模式编程实例3

    在"WPF的MVVM模式编程实例3"中,开发者可能创建了一个包含多个命令绑定的用户界面。例如,你可能会看到一个主窗口,其中包含多个按钮,每个按钮都绑定了不同的DelegateCommand。这些命令可能用于打开新窗口、保存...

    WPF自定义用户控件一个小例子

    用户控件是一种复合控件,它允许开发者将多个基本控件组合在一起,形成一个新的具有特定功能的控件。这在创建复杂的UI布局或重用代码时非常有用。在我们的小例子中,我们可能会创建一个用户控件,例如一个包含按钮、...

    WPF和Silverlight项目设计实例源代码2

    **另一方面,Silverlight是微软推出的一个轻量级的插件技术,用于在Web浏览器中创建富媒体和交互式内容。类似于WPF,它也使用XAML进行界面描述,并支持多种动画和媒体功能。Silverlight尤其适合开发跨平台的Web应用...

    vs Wpf Treelist实例两个

    TreeList控件在WPF中是一个非常有用的组件,它允许我们展示层次结构的数据,类似于Windows资源管理器的文件系统视图。 首先,让我们理解WPF TreeView控件的基础。TreeView是WPF中用于显示数据的树形结构视图,它...

    C# 只能运行一个winForm进程

    C# 只能运行一个winForm进程是指在C#中实现单实例应用程序,确保同一个应用程序只能运行一个实例,以避免资源浪费和混乱。下面将详细介绍如何实现单实例应用程序。 单实例应用程序的实现 在C#中,实现单实例应用...

    WPF MVVM完整示例(登录窗口)

    本示例中的"LoginDemo"是基于WPF和MVVM模式的一个登录窗口应用,涵盖了多个关键知识点。 1. **MVVM模式基础**:MVVM模式的核心在于ViewModel,它是View和Model之间的桥梁。ViewModel通过属性和命令暴露其功能,View...

    WPF各种动画效果例子

    WPF(Windows Presentation Foundation)是微软.NET框架...总之,这个压缩包提供了一个全面的WPF动画效果学习资源,无论是初学者还是有经验的开发者,都能从中受益,提升自己在创建生动、交互性强的WPF应用方面的能力。

    WPF-Metro风格特效实例

    Windows Presentation Foundation(WPF)是.NET Framework的一个重要组成部分,用于构建桌面应用程序。在WPF中,Metro风格是一种灵感来源于Microsoft Windows 8及其Modern UI设计语言的设计风格,它强调简洁、清晰和...

    WPF 打开摄像头 拍照 保存照片

    首先,你需要创建一个`MediaCapture`实例,并设置其初始化设置,然后调用`InitializeAsync()`方法来初始化摄像头。 2. **初始化摄像头**: 在初始化过程中,你需要指定是否捕获音频以及视频的分辨率和帧率。这可以...

    WPF串口消息接收客户端,实现单个串口基本操作:串口扫描、串口连接、串口消息接收/发送

    在本文中,我们将深入探讨如何使用WPF(Windows Presentation Foundation)和C#语言来实现一个串口消息接收客户端,该客户端能执行基本的串口操作,包括串口扫描、连接以及接收和发送消息。WPF是.NET框架的一部分,...

    打开一个窗体、就关闭一个窗体

    在C#编程中,"打开一个窗体、就关闭一个窗体"的场景通常涉及到Windows Forms或WPF(Windows Presentation Foundation)应用中的窗口管理。在这些类型的应用中,窗体(Form或Window)是用户界面的基本组成部分,用于...

    wpf 界面命令实例

    `DelegateCommand`是MVVM(Model-View-ViewModel)模式中常用的一个实现,它简化了`ICommand`的使用,允许直接传入执行方法和判断方法。 在描述中提到的"FirstPro"可能是一个示例项目,展示了如何在WPF中使用界面...

Global site tag (gtag.js) - Google Analytics