• 项目
  • 2019/10/09
 

问题

2019年10月9日星期三 上午2:46

1、为了实现单例模式,在App类中添加了如下代码,使用了信号量,但是为什么返回;isNew一直为true

public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            bool isNew=false;
            Mutex mutex = new Mutex(true, "MySingleInstance", out isNew);
            if(!isNew)
            {
                ActivateOtherWindow();
                Shutdown();
            }
            GC.KeepAlive(isNew);
        }

private static void ActivateOtherWindow()
        {
            var other = Win32Api.FindWindow(null, "MainWindow");
            if (other != IntPtr.Zero)
            {
                Win32Api.SetForegroundWindow(other);
                if (Win32Api.IsIconic(other))
                    Win32Api.OpenIcon(other);
            }
        }
    }

全部回复 (2)

2019年10月9日星期三 上午6:35 已答复 | 1 票

private Mutex mutex = null;

private void CheckSingleInstanceAndStartMainApp(string title)
        {
            bool isNew = false;
            if (null == mutex)
                mutex = new Mutex(true, "PowerPixel", out isNew);
            if (!isNew)
            {
                ActiveAndShowToFront(title);
                Environment.Exit(0);//强制退出,不会有弹框提示
            }
        }

private void ActiveAndShowToFront(string titleName)
        {
            //s1:通过WAPi:FindWindow获取运行实例的句柄
            //或者事先保存实例,传递过来           
            IntPtr hwnd = Win32Api.FindWindow(null, titleName);

if (hwnd != IntPtr.Zero)
            {
                Win32Api.SetForegroundWindow(hwnd);
                if (Win32Api.IsIconic(hwnd))
                    Win32Api.OpenIcon(hwnd);
            }
        }


2019年10月9日星期三 上午3:32

mutex不能被回收

 https://learn.microsoft.com/zh-cn/archive/msdn-technet-forums/bd78928c-890e-435d-acd6-6efc83590975
 

WPF之单例模式的更多相关文章

  1. WPF使用Microsoft.VisualBasic创建单例模式引起的权限降低问题

    在进行WPF开发时,总是在找更加优雅去写单例模式的代码. 很多人都喜欢用Mutex,一个App.cs下很多的Mutex,我也喜欢用. 看完<WPF编程宝典>的第七章Applicaton类后 ...

  2. WPFの单例模式

    版本一: /// <summary>/// A simple singleton class implements./// </summary>public sealed cl ...

  3. wpf 单例模式和异常处理 (原发布 csdn 2017-04-12 20:34:12)

    第一次写博客,如有错误,请大家及时告知,本人立即改之. 如果您有好的想法或者建议,我随时与我联系. 如果发现代码有误导时,请与我联系,我立即改之. 好了不多说,直接贴代码. 一般的错误,使用下面三个就 ...

  4. 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)

    WPF中Style的使用 Styel在英文中解释为”样式“,在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外观更加美化同时减少了 ...

  5. WPF入门教程系列四——Dispatcher介绍

    一.Dispatcher介绍 微软在WPF引入了Dispatcher,那么这个Dispatcher的主要作用是什么呢? 不管是WinForm应用程序还是WPF应用程序,实际上都是一个进程,一个进程可以 ...

  6. 16、WPF中的命令

    一.前言 事件的作用是发布.传播一些信息,消息送达接收者,事件的使命就算完成了,至于如何响应事件送来的消息事件并不做规定,每个接收者可以使用自己的行为来响应事件,也就是说事件不具有约束力.命令能够在代 ...

  7. WPF基础到企业应用系列7——深入剖析依赖属性(WPF/Silverlight核心)

    一. 摘要 首先圣殿骑士非常高兴这个系列能得到大家的关注和支持.这个系列从七月份開始到如今才第七篇,上一篇公布是在8月2日,掐指一算有二十多天没有继续更新了,最主要原因一来是想把它写好,二来是由于近期 ...

  8. WPF 10天修炼 第三天- Application全局应用程序类

    Application对象 当一个WPF应用程序启动时,首先会实例化一个全局唯一的Application对象,类似于WinForm下的Application类,用于控制整个应用程序,该类将用于追踪应用 ...

  9. WPF实现主题更换的简单DEMO

    WPF实现主题更换的简单DEMO 实现主题更换功能主要是三个知识点: 动态资源 ( DynamicResource ) INotifyPropertyChanged 接口 界面元素与数据模型的绑定 ( ...

  10. WPF通过附加属性控制窗口关闭

    场景1 当使用 ShowDialog() 方式显示窗口时,通过定义附加属性的方式可实现在 ViewModel 中进行数据绑定(bool?)来控制子窗口的显示和关闭 public class ExWin ...

随机推荐

  1. 双向链表的基本实现【数据结构与算法—TypeScript 实现】

    笔记整理自 coderwhy 『TypeScript 高阶数据结构与算法』课程 双向链表:拥有两个指针方向的链表 DoublyNode 结构: prev:指向上一个节点 value:节点值 next: ...

  2. 面试连环炮系列(二十️四):为什么选择RocketMQ

    为什么选择RocketMQ,而不是其他MQ 性能:阿里支撑,经受住淘宝,天猫双11重重考验:性能高:可靠性好:可用性高:易扩展. 功能:功能完善,我们需要的功能基本都够满足,如:事务消息,消息重试,死 ...

  3. c# 框架系列 ———— EFCore 模型篇 [一]

    前言 简单介绍一下EfCore 的模型篇 正文 内容来源: 配置模型 配置模型的方式,一种是fluent api 还一种是属性的方式. public class Blog { public int B ...

  4. CF-938(C-E)

    CF-938 C 没啥好分析的,就记录一下我因为没有清空s[n+1].上取整写成了下取整卡了一个多小时(╬▔皿▔)╯ const int N=2e5+5; int a[N],p[N],s[N]; vo ...

  5. NOIP模拟四

    NOIP模拟四 number 题目描述 现有 \(2^n\) 个点,点编号为 \(0\sim2^n-1\). 定义这些点的一张异或图为: 先选定一个集合 \(S\). 对于原图上编号为 \(x\) 和 ...

  6. 深入理解MD5:Message Digest Algorithm 5

    title: 深入理解MD5:Message Digest Algorithm 5 date: 2024/4/21 18:10:18 updated: 2024/4/21 18:10:18 tags: ...

  7. KubeDL HostNetwork:加速分布式训练通信效率

    ​简介:ubeDL 为分布式训练作业带来了 HostNetwork 网络模式,支持计算节点之间通过宿主机网络相互通信以提升网络性能,同时适应 RDMA/SCC 等新型高性能数据中心架构的网络环境,此外 ...

  8. Duang,您的钉钉应用已上线!云开发5分钟快速打造钉钉会议室预定系统

    简介: 5分钟可以干什么?喝一杯咖啡,回一封邮件,还是开发上线一个钉钉应用.云开发平台联合钉钉开发平台推出0门槛打造你的第一个钉钉应用的活动,完成相应任务后,即可领取精美奖品.春暖花开,领个背包去踏春 ...

  9. 阿里云 EDAS 3.0 助力唱鸭提升微服务幸福感

    简介: EDAS 3.0 提供的微服务治理,很好的支持了唱鸭 APP 实现微服务应用的发布.监控.管理等日常业务场景.作为运维侧的重要平台和开框架的提供者,EDAS 3.0 帮助用户可以更专注业务.微 ...

  10. win10 uwp 笔迹书写预测 墨迹书写加速

    在 UWP 的 InkCanvas 里自带了预测书写轨迹的功能,开启此功能可以进行书写预测,从而减少书写延迟.本文将告诉大家如何在 UWP 的 InkCanvas 里开启笔迹书写预测功能 在 UWP ...