建议53:必要时应将不再使用的对象引用赋值为null 在CLR托管的应用程序中,存在一个“根”的概念,类型的静态字段、方法参数、以及局部变量都可以作为“根”的存在(值类型不能作为“根”,只有引用类型的指针才能作为“根”)。 局部变量在代码运行过程中会在内存中创建一个“根”。在一次垃圾回收中,垃圾回收 ...
建议57:实现ISerializable的子类型应负责父类的序列化 我们将要实现的继承自ISerializable的类型Employee有一个父类Person,假设Person没有实现序列化,而现在子类Employee却需要满足序列化的场景。不过序列化器并没有默认处理Person类型对象,这些事情只 ...
There are several ways to consume a RESTful API in C#: HttpWebRequest/Response Class WebClient Class HttpClient Class RestSharp RestSharp is the OpenS ...
建议49:在Dispose模式中应提取一个受保护的虚方法 在标准的Dispose模式中,真正的IDisposable接口的Dispose方法并没有做实际的清理工作,它其实是调用了下面的这个带bool参数且受保护的的虚方法: 之所以提供这样一个受保护的虚方法,是因为考虑了这个类型会被其他类型继承的情况 ...
建议52:及时释放资源 垃圾回收机制自动为我们隐式地回收了资源(垃圾回收器会自动调用终结器),那我们为什么要主动释放资源呢? 这是一个WinForm窗体程序的例子,在这个示例中,单击一个按钮负责打开一个文件,单击另一个按钮负责回收说有“代”(代的概念会在下文详细指出)的垃圾。如果连续两次单击打开文件 ...
1)直接调用window.open 或 点击的时候直接调用 window.open 是不会被拦截的 2)window.open 只能放函数第一层,放在函数嵌套里会被拦截 简单来说,要想不被拦截,window.open 只能放函数第一层,不能放嵌套函数里(PS:写成一个独立的函数,但调用是在嵌套函数里 ...
温故而知新,今天学习Math.Max和Min的方法。这2个方法,均需要传入2个参数,返回参数中最大值和最小值。 class Ac { public void LeanMathFunction() { int min = Math.Min(5,3); Console.WriteLine("5,3最小值 ...
建议56:使用继承ISerializable接口更灵活地控制序列化过程 接口ISerializable的意义在于,如果特性Serializable,以及与其像配套的OnDeserializedAttribute、OnDeserializingAttribute、OnSerializedAttribu ...
建议54:为无用字段标注不可序列化 序列化是指这样一种技术:把对象转变成流。相反过程,我们称为反序列化。在很多场合都需要用到这项技术。 把对象保存到本地,在下次运行程序的时候,恢复这个对象。 把对象传到网络中的另外一台终端上,然后在此终端还原这个对象。 其他场合,如:把对象赋值到系统的粘贴板中,然后 ...
建议55:利用定制特性减少可序列化的字段 特性(attribute)可以声明式地为代码中的目标元素添加注释。运行时可以通过查询这些托管块中的元数据信息,达到改变目标元素运行时行为的目的。System.Runtime.Serialization命名空间下,有4个这样的特性: OnDeserialize ...
接上文:Zabbix添加对Windows 客户端CPU温度的监控:http://blog.51cto.com/mikeyoo/2046571在这篇文章通过利用SpeedFan的监控日志功能实现了对CPU温度监控,但SpeedFan监控项目不止温度这一项,下面我们来把这些利用起来~~添加对CPU风扇转速的监控首先打开SpeedFan添加对风扇的LogPS:我的这台机检测到两个风扇,不确定那个是CPU
createwindow 定义 修改样式设置style 将窗体设置为 无边框(|WS_POPUP),方便嵌到其他程序里面,一般设置为最大化(WS_MAXIMIZE),如需设置可拖拽(WS_SIZEBOX)。如果需要设置成固定大小及位置 调整xy坐标及width、height 宽高。 下面为一些参考链 ...
本人业余时间开发了一个图片切割工具,非常好用,也很灵活! 特别对大型图片切割,更能体现出该软件的优势! ...
(1)创建WCF 代码示例: [ServiceContract] public interface ILimsDBService { [OperationContract] int ExecuteSql(string strSql); [OperationContract] DataTable Ge ...
建议61:避免在finally内撰写无效代码 在阐述建议之前,需要先提出一个问题:是否存在一种打破try-finally执行顺序的情况,答案是:不存在(除非应用程序本身因为某些很少出现的特殊情况在try块中退出)。应该始终认为finally内的代码会在方法return之前执行,哪怕return在tr ...
最近有个需求,将同一个程序运行8个实例,并按照规则在两个窗口上分布,本以为用bat就可以实现,结果发现没那么容易,搜了很久找到了这个工具cmdow.exe,发现这个东西真不错。 符合了我们项目的需求:单文件,离线可用,免安装,非常省心。 直接bat里调用,可以实现很多功能,但是我们这次的需求用bat ...
1.1、Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过U ...
建议60:重新引发异常时使用Inner Exception 当捕获了某个异常,将其包装或重新引发异常的时候,如果其中包含了Inner Exception,则有助于程序员分析内部信息,方便代码调试。 以一个分布式系统为例,在进行远程通信的时候,可能会发生的情况肯能会有: 1)网卡被禁用或者网线断开,此 ...
int SocketClient::connectTimeOutForWin(SOCKET &connect_fd, const int &timeout, const sockaddr_in &server) { int error=-1, len; len = sizeof(int); time... ...
先将窗体windowstate属性设置为Maximized public partial class Form1 : Form { public Form1() { InitializeComponent(); } //获取所有控件属性(长、宽、位置、字体大小) privat... ...