• C#中使用My实现单例应用程序


    要实现像千千静听那样的效果:也就是如果打开了千千静听,再去点击千千静听的图标,打开的还是原来的那个,而不会新开一个应用程序窗口。

    这就是应用程序的单例形式,很多关于都是使用进程,锁之类的方法,看着恐怖,用得也不放心。自己摸索了一个使用My关键实现单例的例子。

    使用vb.net的开发环境,可以直接设置单例,而c#没有提供这种方便的设置,vb.net之所以可以这样方便,很多的功劳都是归于My关键字,c#要想使用My提供的功能,必须先引用“Microsoft.VisualBaisc”程序集。实现应用程序单例主要使用的是vb.net中的My.Application类,就算引用了“Microsoft.VisualBaisc”程序集,在c#中也没有这个类,为什么呢?因为对于My,c#引用的命名空间和vb.net不是一样的。My.Application在c#中的引用命名空间是Microsoft.VisualBaisc.ApplicationServices。

    为了实现单例,需要稍微改写一下Program类。在改写之前,先添加一个MyApplication类,该类的实现如下
     1    /// <summary>
     2     /// WindowsFormsApplicationBase位于Microsoft.VisualBasic.ApplicationServices命名空间
     3     /// 也就是My里面的
     4    /// </summary>
     5     public class MyApplication : WindowsFormsApplicationBase
     6     {
     7         public MyApplication()
     8         {
     9             //设置只有一个应用程序实例
    10             this.IsSingleInstance = true;
    11         }
    12 
    13         protected override void OnCreateMainForm()
    14         {
    15             //Form1为你要启动的主窗体
    16             this.MainForm = new Form1();
    17 
    18         }
    19     }

    改写一下Program类
     1     static class Program
     2     {
     3         [STAThread]
     4         static void Main(string [] args)
     5         {
     6 
     7             MyApplication app = new MyApplication();
     8             app.Run(args);
     9             
    10         }
    11     }

    到此,已经大功告成,就这么简单

  • 相关阅读:
    第二阶段冲刺——个人总结05
    购书最低价
    第二阶段冲刺——个人总结04
    第二阶段冲刺——个人总结03
    第二阶段冲刺——个人总结02
    学习进度条——十三周
    第二阶段冲刺——个人总结01
    android模拟器
    unigui导出TMS.Flexcel【5】
    unigui+fastreport 打印【4】
  • 原文地址:https://www.cnblogs.com/liangsunxp/p/1523115.html
Copyright © 2020-2023  润新知