• 项目
  • 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. HamronyOS自动化测试框架使用指南

      概述 为支撑HarmonyOS操作系统的自动化测试活动开展,我们提供了支持JS/TS语言的单元及UI测试框架,支持开发者针对应用接口进行单元测试,并且可基于UI操作进行UI自动化脚本的编写. 本指 ...

  2. 粗心的小红qsnctfwp

    将原 apk 安装包后缀名修改为 zip 将其中的 classes3.dex 文件解压 使用 Notepad++ 或其他工具打开 classes3.dex,将第 2 行的 38 修改为 35 或 36 ...

  3. vscode 编辑python 如何格式化

    正文 今天同事说我的代码的格式不对,其实就是几个空格忘了空4格了,但是代码可运行. 那么如何帮我们检测呢? pip install yapf 然后打开setting: 输入:ython.formatt ...

  4. MRBS(Meeting Room Booking System)开源的会议室预订系统搭建使用

    前一家公司所有的办公系统都是自己开发的,包括排班.工单.会议室预定等等,很方便. 目前所在的公司,每周部门例会找行政预订了会议室,但多次去都被人占了,很烦,于是网上找了一个评价不错的系统,python ...

  5. sql多表分页查询【oracle】

    sql多表查询[oracle] 做个记录,好歹是写出来了,使用左连接的方法,进行四表查询,且使用rownum进行分页 把涉及内容的全部替换了,不过应该都看得懂,就不说了 select * from ( ...

  6. 力扣511(MySQL)-游戏玩法分析Ⅰ(简单)

    题目: 活动表 Activity: 写一条 SQL 查询语句获取每位玩家 第一次登陆平台的日期. 查询结果的格式如下所示:  解题思路: 方法一:使用dense_rank() over(partiti ...

  7. 力扣383(java&python)-赎金信(简单)

    题目: 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成. 如果可以,返回 true :否则返回 false . m ...

  8. 力扣504(java)-七进制数(简单)

    题目: 给定一个整数 num,将其转化为 7 进制,并以字符串形式输出. 示例 1: 输入: num = 100输出: "202"示例 2: 输入: num = -7输出: &qu ...

  9. AI运动:阿里体育端智能最佳实践

    简介: 过去一年,阿里体育技术团队在端智能方面不断探索,特别在运动健康场景下实现了实践落地和业务赋能,这就是AI运动项目.AI运动项目践行运动数字化的理念,为运动人口的上翻提供了重要支撑,迈出了阿里体 ...

  10. WPF 已知问题 在 ObservableCollection 的 CollectionChanged 修改集合内容将让 UI 显示错误

    本文记录一个 WPF 已知问题,在 ObservableCollection 的 CollectionChanged 事件里面,绕过 ObservableCollection 的异常判断逻辑,强行修改 ...