上次写了一个C#线程池及管理器的博文( C#开发的线程池和管理器 - 开源研究系列文章 ),收到了不小的浏览量,在此感谢各位网友的支持.这次将另一个功能放出来单独讲解:C#应用程序的配置文件,使用的是XML文件保存程序的配置信息,通过XML序列化和反序列化,将配置文件规范起来. 一.      项目目录: 项目主要由一个应用程序及类库组成,其中Framework提供基本的函数,Helper类提供操作需要的函数,Module库提供配置信息对象. 二.      函数介绍: 1.        配置…
上次编写了一个家庭小助手的小工具软件,也对其中的线程池及管理器进行了介绍(见博文:C#开发的线程池和管理器 - 开源研究系列文章),这次把里面的插件部分的功能单独放出来进行介绍,让更多的朋友能够进行学习借鉴及代码复用上. 一.      项目目录: 下面对项目目录进行介绍,其中PlugIns是主程序,Lzhdim的类库为需要的操作库,Plugins.Example为插件程序DLL文件: 二.      插件接口定义: 此程序定义了关于窗口和插件程序两个接口,主要是通过C#的反射进行的调用.其中关…
上次将小软件的线程池描述了,也将插件程序描述了,这次就将里面的资源文件相关的内容进行下记录,这里能够让程序做成国际化的形式(即多语言程序),主要就是通过这个资源文件的方式进行的处理.下面将对这个资源文件的定义进行描述,比网上的其它例子更能够具有代码复用意义. 一.      项目目录: 下图是项目目录,上面是资源文件类库,下面是应用程序.从资源文件库中可看到,我们定义了4个资源文件类,从中对资源文件库中的资源进行读取. 二.      资源文件定义: 我们在资源类库中定义了几个类,对资源文件进行…
要实现单例,关键是要保证类的alloc和init只被调用一次,并且被自身强引用防止释放. 近日读唐巧先生的<iOS开发进阶>,受益匪浅,通过GCD实现单例就是收获之一,下面把这个方法与大家分享. 在GCD中,有一个函数dispatch_once,可以实现代码段的一次性执行,和static修饰的变量赋值的一次性一样,我们结合static和dispatch_once,就可以简单的实现单例. 下面的代码实现了SomeClass单例: #import <Foundation/Foundation…
原创文章,转载请注明出处:http://huyanping.sinaapp.com/?p=222 作者:Jenner 一.场景描写叙述: 近期我们一块业务.须要不断的监听一个文件夹的变化.假设文件夹中有文件,则启动PHP脚本处理掉. 最初的方案是使用crontab运行sh脚本,脚本大概例如以下: SOK=`ps -ef |grep /www/sender.sh | grep -v grep|wc -l` if [[ "$SOK" < "2" ]];then f…
对于一个完整的程序系统,一个日志记录是必不可少的.可以用它来记录程序在运行过程中的运行状态和报错信息.比如,那些不想通过弹框提示的错误,程序执行过程中捕获的异常等. 首先,在你的解决方案中,适当的目录中新建一个类,比如 LogManager: 编写如下代码: /// <summary> /// 日志管理 /// </summary> public class LogManager { private string _logDir; // 日志文件存放目录 private stati…
public class SoftHelper { ///<summary> /// 该函数设置由不同线程产生的窗口的显示状态 /// </summary> /// <param name="hWnd">窗口句柄</param> /// <param name="cmdShow">指定窗口如何显示.查看允许值列表,请查阅ShowWlndow函数的说明部分</param> /// <retu…
Mutex不仅提供跨线程的服务,还提供跨进程的服务.当在构造函数中为Mutex指定名称时,则会创建一个命名了的Mutex.其他线程创建Mutex时,如果指定的名称相同,则返回同一个互斥体,不论该线程位于哪个进程或者应用程序域中. 使用命名互斥体的一个例子是创建Singleton应用程序,即只能打开一个实例的应用程序.显然,我们创建的控制台应用程序是可以同时打开多个实例的.下面的代码使用Mutex实现了只能同时开启一个Console控制台程序. string asm = Assembly.GetE…
1.源起: KV项目下载底层升级包,老是报出升级文件占用问题,反复分析,不得其所. 今天突然发现同时启动多个升级程序实例,分析认为安装包同时被调用多次,引发实例访问文件冲突,导致此问题. 安装程序由Inno Setup制作,遂找其解决方案,最先想到的是互斥体,就由此开始! 2.AppMutex [Setup] AppMutex=MyAppMutex 安装程序Setup段,此互斥变量,会在安装程序启动时检测是否有此互斥体的程序在运行,若有则提示: 通常在程序中置同名互斥体,此处判断,可避免程序在运…
代码 System.Threading.Mutex mutex; protected override void OnStartup(StartupEventArgs e) { bool ret; mutex = new System.Threading.Mutex(true, "StikyNotesAPP", out ret); if (!ret) { MessageBox.Show("程序已经运行了"); Environment.Exit(0); } base.…