winform窗体对象 单例模式与泛型结合

时间:2022-10-22 11:56:27

实现弹出窗体对象的单例模式  结合泛型后,可以用于所有窗体的弹出操作

    public class BaseFrm<T> where T : Form, new()
{
//定义一个静态的,私有的类型变量,
private static T t;
//程序运行时创建一个静态只读的进程辅助对象:因为要加锁时,实例有没有被创建出来,(有没有被创建过实例)还不知道。
private static readonly object syncRoot = new object();
//将构造函数做成私有的,防止此工具窗体在其它地方被实例化 public static T GetInstance()
{
if (t == null || t.IsDisposed)//先判断实例是否被创建,不存在则再加锁处理
{
lock (syncRoot)//在同一个时刻加了锁的那部分程序只有一个线程可以进入(但是如果每次还没有确定,是否已经有实例就去加锁,很浪费资源)
{
if (t == null || t.IsDisposed)//单纯的这样无法解决多线程程序中,多个线程同时访问这个类的情况
{
t = new T();
//OrderBookFrm.MdiParent = StuMainFrm.ActiveForm;//获取应用程序的当前活动窗体
}
}
}
return t;
}
}

winform窗体对象 单例模式与泛型结合的更多相关文章

  1. C&num;基础(WinForm窗体的单例模式&comma;避免窗体被实例化多次)

    在MDI窗体中使用单例模式可以有效的避免同个窗体被实例化多次 [csharp] view plain copy   //==============字窗体的修改================  // ...

  2. Winform 窗体单例

    有窗体Form1和窗体Form2,单击Form1上按钮,只弹出一个Form2. Form2里自定义一个方法,里面判断是否弹出Form2,没有时弹出Form2. public static Form2 ...

  3. 单例模式(Winform窗体的实现)

    在我的设计模式分类当中,我选择单例模式作为我第一个要写的设计模式,其一,单例模式简单.容易理解让人接受,其二,单例模式很常用,在实际的Winform窗体应用开发中能够带来更好的客户体验. 单例模式的核 ...

  4. winform窗体继承泛型类时&comma;设计器无法使用解决办法

    当我们使用winform程序时,winform窗体程序和控件程序都是可以通过设计器进行控件拖拽的,但如果我们继承了一个带有泛型的form基类.那么设计器是无法使用的. 目前我没有找到根本解决的办法,但 ...

  5. WinForm 窗体属性 窗体美化

    WinForm是·Net开发平台中对Windows Form的一种称谓. Windows窗体的一些重要特点如下: 功能强大:Windows窗体可用于设计窗体和可视控件,以创建丰富的基于Windows的 ...

  6. winform窗体控件(全)

    回顾跟补充下除了昨天那常用6个其他的winform窗体控件作用 1:Button:按钮 (1)AutoSize:如果是True的情况下,内容将会撑开:False的话会另起一行 (2)Enabled: ...

  7. C&num; winform窗体设计-通过条件查询数据

    在winform 数据库设计中,有时候需要通过条件查询对应的数据,并且将数据显示在文本框(or 富文本框)中,下面,小编将讲述通过一个条件: 首先,我们需要对数据库建立连接,并且执行数据库命令,在此之 ...

  8. 客户端&lpar;Winform窗体)上传文件到服务器(web窗体)简单例子

    客户端:先创建一个winform窗体的应用程序项目 项目结构

  9. Winform窗体实现简单的二维码生成和保存

    二维码的生成需要用到二维码生成的类库,ThoughtWorks.QRCode.dll 步骤: 第一步:下载二维码生成类库,ThoughtWorks.QRCode.dll 第二步:新建winform项目 ...

随机推荐

  1. JavaScript模板引擎artTemplate&period;js——template&period;compile&lpar;&rpar;方法

    template.compile(source, options) source:必传,渲染模板的内容. options:可选,通常不传.(其实是我还没研究明白) return:一个渲染函数. 示例如 ...

  2. BZOJ1798&colon; &lbrack;Ahoi2009&rsqb;Seq 维护序列seq

    传送门 写这道题是为了get一个同时传送乘法下标和加法下标的小技巧,线段树模板题.不多说. 标记名字打错无限智力-- //BZOJ 1798 //by Cydiater //2016.9.13 #in ...

  3. 【C&num;进阶系列】08 方法

    实例构造与引用类型 之前的章节其实已经写过了引用类型的构造过程: 首先当然是,在堆中,为引用类型的实例对象分配内存,然后初始化对象的附加字段(即类型对象指针和同步块索引). 这个时候为对象分配的内存都 ...

  4. CreateCompatibleDC与BitBlt 学习

    CreateCompatibleDC与BitBlt CreateCompatibleDC 创建一个与指定设备一致的内存设备描述表. HDC CreateCompatibleDC(HDC hdc //设 ...

  5. C&plus;&plus;中关于cin、cin&period;get&lpar;&rpar;、cin&period;getline&lpar;&rpar;、getline&lpar;&rpar;、gets&lpar;&rpar;等函数的用法

    1.cin>> 用法1:最基本,也是最常用的用法,输入一个数字: 注意:>> 是会过滤掉不可见的字符(如 空格 回车,TAB 等) cin>>noskipws&gt ...

  6. 团体程序设计天梯赛-练习集L2-004&period; 这是二叉搜索树吗

    L2-004. 这是二叉搜索树吗? 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一棵二叉搜索树可被递归地定义为具有下列性质的 ...

  7. Linux下安装ACE

      ACE 5.6下载地址:http://download.dre.vanderbilt.edu/ 方法一: 1. 解开ACE-install.sh文件    tar –zxvf ACE-5.6.ta ...

  8. RHEL7 -- Linux搭建FTP虚拟用户

    安装vsftpd软件包[root@localhost ~]# yum install vsftpd -y [root@localhost ~]# yum install db4 db4-utils 建 ...

  9. 吴裕雄 数据挖掘与分析案例实战(13)——GBDT模型的应用

    # 导入第三方包import pandas as pdimport matplotlib.pyplot as plt # 读入数据default = pd.read_excel(r'F:\\pytho ...

  10. 【数组】Find Peak Element

    题目: A peak element is an element that is greater than its neighbors. Given an input array where num[ ...