winform窗体对象 单例模式与泛型结合
实现弹出窗体对象的单例模式 结合泛型后,可以用于所有窗体的弹出操作
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窗体对象 单例模式与泛型结合的更多相关文章
- C#基础(WinForm窗体的单例模式,避免窗体被实例化多次)
在MDI窗体中使用单例模式可以有效的避免同个窗体被实例化多次 [csharp] view plain copy //==============字窗体的修改================ // ...
- Winform 窗体单例
有窗体Form1和窗体Form2,单击Form1上按钮,只弹出一个Form2. Form2里自定义一个方法,里面判断是否弹出Form2,没有时弹出Form2. public static Form2 ...
- 单例模式(Winform窗体的实现)
在我的设计模式分类当中,我选择单例模式作为我第一个要写的设计模式,其一,单例模式简单.容易理解让人接受,其二,单例模式很常用,在实际的Winform窗体应用开发中能够带来更好的客户体验. 单例模式的核 ...
- winform窗体继承泛型类时,设计器无法使用解决办法
当我们使用winform程序时,winform窗体程序和控件程序都是可以通过设计器进行控件拖拽的,但如果我们继承了一个带有泛型的form基类.那么设计器是无法使用的. 目前我没有找到根本解决的办法,但 ...
- WinForm 窗体属性 窗体美化
WinForm是·Net开发平台中对Windows Form的一种称谓. Windows窗体的一些重要特点如下: 功能强大:Windows窗体可用于设计窗体和可视控件,以创建丰富的基于Windows的 ...
- winform窗体控件(全)
回顾跟补充下除了昨天那常用6个其他的winform窗体控件作用 1:Button:按钮 (1)AutoSize:如果是True的情况下,内容将会撑开:False的话会另起一行 (2)Enabled: ...
- C# winform窗体设计-通过条件查询数据
在winform 数据库设计中,有时候需要通过条件查询对应的数据,并且将数据显示在文本框(or 富文本框)中,下面,小编将讲述通过一个条件: 首先,我们需要对数据库建立连接,并且执行数据库命令,在此之 ...
- 客户端(Winform窗体)上传文件到服务器(web窗体)简单例子
客户端:先创建一个winform窗体的应用程序项目 项目结构
- Winform窗体实现简单的二维码生成和保存
二维码的生成需要用到二维码生成的类库,ThoughtWorks.QRCode.dll 步骤: 第一步:下载二维码生成类库,ThoughtWorks.QRCode.dll 第二步:新建winform项目 ...
随机推荐
- MyEclipse取消Show in Breadcrumb的方法
eclipse中的Show in Breadcrumb是快速导航条,可以清晰的看到我们当前的类,属性或方法的导航 定位. 如果不喜欢的话,取消掉的方法如下: Window -> Customiz ...
- xml数据解析
xml数据解析 在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.Kiss ...
- 关于SqlDataAdapter的使用
原文传送门 如果使用SqlDataAdapter来查询数据返回给DataSet或者DataTable时需要注意以下几点:1.如果SqlDataAdapter的SelectCommand的连接并没有打开 ...
- 公共建筑能耗监测平台的GPRS通讯服务器的开发方法分享
公共建筑能耗监测平台的GPRS通讯服务器的开发方法分享 在这个文章里面我将用一个实际的案例来分享如何来构建一个能够接受3000+个连接的GPRS通讯服务器软件,这个软件被我认为是一个艺术品,实现周期为 ...
- network重启失败原因
/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE='eth0' eth0后面千万不能加空格之类的
- [基础]RHEL6下LINUX服务器批量部署
包准备:xinetd,tftp-server,dhcp,httpd,system-config-kickstart,syslinux,nfs 试验环境: 本机地址:192.168.46.98 ...
- LINUX下编译安装最新版本mysql
通过参考其他文章 1.下载安装mysql-5.5.30.tar.gz与cmake.2.8.11.2.tar.gz (1)先安装cmake(mysql5.5以后是通过cmake来编译的) [root@ ...
- javaapplicationWeb application setup on Ubuntu VPS
题记:写这篇博客要主是加深自己对javaapplication的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. Now there are many hosting server ...
- C语言之while和do-while
一 while和do-while的简介 1). while语句 语法: while(表达式){ 循环体; } 循环过程: 1.先判断表达式,是否为真,如果为真跳转到2,否则跳转到3 2.执行循环体,执 ...
- python中函数与函数之间的调用,总是晕菜,整理如下,有不对或者补充的请提出来~
1.python函数基础 函数名: fun 函数体:1~3行 返回值:2 调用函数:fun() ,只有见到这个括号(),程序会根据函数名从内存中找到函数体,然后执行它. 2.函数的执行顺序 下面的fu ...