基于c#+xaml的前台采用IE的js引擎写后台
    
            
摘要:基于c#+xaml的前台采用IE的js引擎写后台的猜想参考上一篇文章基于js的开发wp8界面的猜想知道可以使用js的window.external.notify调用c#c#可以用InvokeScript调用js方法如果返回值类型是字符串类型可以直接返回因此我们可以再次使用WebBrowser控件做我们的js引擎(如果可以吧v8引擎移植最好啦),而且我们新建控件不用把控件放入UI一样有效基于以上的猜想进行实验 新建一个wp类库代码如下publicclassClass1{WebBrowserBrowser=newWebBrowser();publicClass1(){Browser.IsScrip
        
阅读全文
 
            
        
        
            
    .NET事件的指导原则
    
            
摘要:.NET事件的指导原则C#允许编写所需的各种类型的事件。但是,为了与.NET Framwork的组件相兼容,开发人员必须遵循微软为此建立的一系列指导原则。这些指导原则的核心是,事件处理程序必须拥有两个参数。第一个参数是一个引用,它指向产生该事件的对象;第二个参数为EventArgs类型,它包含处理程序所需的其他信息。因此,与.NET兼容的处理程序通常采用下面的通用形式:void handler(object sender,EventArgs e){ }其中,一般由调用代码向sender参数传递this值。e参数包含了附加的信息,如果方法并不需要这些信息,那么可以忽略他们。EventArgs..
        
阅读全文
 
            
        
        
            
    并发和原子操作不可兼得
    
            
摘要:并发和原子操作不可兼得在上一篇文章中,我主要向大家介绍了利用servicestack连接redis以及一些redis的基本数据类型,传送门本文中,我将通过一个具体应用场景为大家介绍redis中的并发和原子操作其中用到的redis命令,请大家去redis官网查询http://www.redis.io/commands一一个投票统计的应用场景假设我要做一个实时统计投票数的应用,这个投票总共有A、B、C、D四个选项,因为是一个高并发的场景,所以我准备用redis来存储投票数 我们首先利用redis-cli模拟这个过程,打开命令终端,新建一个hash类型的key,叫做TicketCount, 编号为1
        
阅读全文
 
            
        
        
            
    Define Constraints That Are Minimal and Sufficient 设定不多不少的约束
    
            
摘要:Define Constraints That Are Minimal and Sufficient 设定不多不少的约束今天第二章第二节。主管不在,然后暂时没什么任务,把第二节看了,然后整理一下,下班之后就能继续去打球了。标题翻译是,设定不多不少的约束,(好像有点过于通俗了)。关键是何为不多不少。这里有个没意义的约束:定义一个Object约束确实没意义,你能想出有什么意义吗?既然如此,编译器就直接不让过了。再做个测试。定义一个Person类。 public class Person { public int ID { get; set; } public...
        
阅读全文
 
            
        
        
            
    多线程开发技术基础
    
            
摘要:多线程开发技术基础多线程开发扫盲系列第二编:多线程开发技术基础1. 线程的创建、启动和停止2. Windows操作系统线程调度策略3. 向线程函数传送信息的方式4. 线程统一取消模型1.线程的创建、启动和停止在.NET应用程序中,线程由Thread类创建的对像代表。Thread类提供了许多属性和方法对线程进行控制Thread类拥有4个重载的构造函数,最常用的一个可接收一个ThreadStart类型的参数:public Thread(ThreadStart start)ThreadStart是一个委托,其定义如下:Public delegate void ThreadStart();从以上定义可
        
阅读全文
 
            
        
        
            
    详解 ManualResetEvent
    
            
摘要:详解 ManualResetEvent今天详细说一下ManualResetEvent它可以通知一个或多个正在等待的线程已发生事件,允许线程通过发信号互相通信,来控制线程是否可心访问资源当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用Reset以将ManualResetEvent置于非终止状态。此线程可被视为控制ManualResetEvent。调用ManualResetEvent上的WaitOne的线程将阻止,并等待信号。当控制线程完成活动时,它调用Set以发出等待线程可以继续进行的信号。并释放所有等待线程。一旦它被终止,ManualResetEvent将保持终止状态,直
        
阅读全文
 
            
        
        
            
    基于“泵”的TCP通讯(接上篇)
    
            
摘要:基于“泵”的TCP通讯(接上篇)上一篇博客中说了基于“泵”的UDP通讯,附上了一个Demo,模拟飞鸽传书的功能,功能不太完善,主要是为了说明“泵”在编程中的应用。本篇文章我再附上一个关于TCP通讯的两个Demo,也都采用了“泵”模式:1.由于我把通讯部分的代码写在了一个dll中,这个demo只是简单的应用这个dll,主要完成发送字符串、字节流、可序列化对象等功能,效果图如下:图1 服务端图2 客户端2.一个简单的屏幕监控程序,主要有屏幕监控、键盘鼠标监控、键盘鼠标控制等功能。监控服务端可以同时监控多个客户端,效果图如下:图3 服务端监控界面这个demo稍微复杂一点,各功能实现如下:1) Win
        
阅读全文
 
            
        
        
            
    c/s 自动升级(WebService)
    
            
摘要:c/s 自动升级(WebService)首先声明,本人文笔不好,大家见笑,请高手不要吐槽.做c/s开发肯定会遇到的就是自动升级功能,而这实现方式是非常多. 本文使用 webservice的方式来提供升级服务 首先准备服务为了方便我们专门用一个文件夹来存放需要更新的应用程序因为觉得通过新版本来更新很麻烦,所以验证文件是否需要更新用md5来判断WebService: public string GetVer() { DirectoryInfo dir = new DirectoryInfo(Server.MapPath("update")); ...
        
阅读全文
 
            
        
        
            
    备忘录模式
    
            
摘要:备忘录模式备忘录模式其实就是给我们的应用程序一次撤销的机会。使用过word的人肯定会知道伟大的“Ctrl+Z”,用过PS的人更是不会忘记,应该来说基本上所有的带编辑功能的软件毫无例外都提供了撤销的功能,撤销功能给了我们1次或N次返回的机会,准确地说应该是恢复之前状态的机会。我们自己开发的软件有时候有需要撤销的功能,比如在网络通信中,常常会因为不可预知的错误就导致程序出错,这时候,要是能恢复到上一个正确的状态就太好了,这样可以省去不上功夫。我们今天要讨论的备忘录模式就是用来解决这个问题的。经典的备忘录模式如下图所示:注:本图来自《设计模式_基于C#的工程化实现及扩展》 首先,还是让我来解释一下这
        
阅读全文
 
            
        
        
            
    直接修改.NET程序集 LLBL Gen 2.x-4.x 许可授权方法研究
    
            
摘要:直接修改.NET程序集 LLBL Gen 2.x-4.x 许可授权方法研究做数据库开发,如果要用ORM,LLBL Gen是一款优秀的框架和工具,目前最新版本是4.0。同时也推出了Lite免费版本,与Visual Studio的Express版本一样,免费,但是它仅仅只支持10个实体,可满足学习的需要,做项目用则不行。借助于MSIL知识和工具.NET Reflector,我可以直接对.NET程序集进行编辑,去掉许可证授权验证窗口,转化为可用的软件。请参考下面的.NET代码,它是LLBL Gen应用Xml签名验证许可的关键程序片段:public static LicenseInfo Verify(
        
阅读全文
 
            
        
        
            
    自用类库整理之SqlHelper和MySqlHelper
    
            
摘要:自用类库整理之SqlHelper和MySqlHelper自用的SQLHelper和MySqlHelper,除一些通用方法外,封装了一些很实用的批量操作方法,简单介绍下SqlHelperExecuteEmptyDataTable获取空表结构,主要用于需要构造DataTable进行大批量数据插入时使用BulkInsert大批量数据插入,使用SqlBulkCopy进行大批量数据导入,仅提供了DataTable方式,需要DataReader的请自行重载BatchDelete、BatchUpdate批量数据更新、插入,使用SqlDataAdapter实现,需要进行较大数据量更新、插入时可以使用此方法,性
        
阅读全文
 
            
        
        
            
    利用servicestack连接redis
    
            
摘要:利用servicestack连接redis引言:作为少有的.net架构下的大型网站,stackoverflow今日发表了一篇文章,介绍了其技术体系,原文链接http://highscalability.com/blog/2011/3/3/stack-overflow-architecture-update-now-at-95-million-page-vi.html。从文中可以看到,该网站运用了redis作为其缓存层。而新浪微博早就已经大量使用redis。作为一个新兴的nosql数据库,redis既解决了memcached持久化的问题,又在性能上和传统的memcached+mysql不相上下。
        
阅读全文
 
            
        
        
            
    C# 枚举常用工具方法
    
            
摘要:/// /// 获取枚举成员描述信息及名称 /// 返回:IDictionary /// Value:描述信息 /// Key:值 /// /// struct类型 /// IDictionary protected IDictionary GetEnumMemberList() where T : struct { var members = typeof(T).GetMembers().Where(s => s.Member...
        
阅读全文
 
            
        
        
            
    如何利用.Net内置类,解析未知复杂Json对象
    
            
摘要:如何利用.Net内置类,解析未知复杂Json对象如果你乐意,当然可以使用强大的第三方类库Json.Net中的JObject类解析复杂Json字串 。我不太希望引入第三方类库,所以在.Net内置类JavaScriptSerializer.DeserializeObject的基础上做了一些封装,可以方便的读取复杂json中的内容,而无需专门定义对应的类型。等不及看的,直接下载源码:JsonObject.7z代码实例:using System;using System.Collections.Generic;using System.Linq;using System.Text;using Syst
        
阅读全文
 
            
        
        
            
    开发框架(WinForm)3
    
            
摘要:我的开发框架(WinForm)3今天继续给大家介绍核心库的IOC的使用,在我的框架里,IOC使用的比较简单,主要是用于解除模块间的耦合和实例化接口。1、接口说明,IocContainer接口比较简单只有3个方法,但是是系统中用的最多的。IocContainerpublic interface IocContainer:IDisposable { /// /// 获得某个接口的一组实例 /// /// /// IEnumerable{``0}. IEnumerable GetInstances(); ...
        
阅读全文
 
            
        
        
            
    创建静态报表
    
            
摘要:[原创]Devexpress XtraReports 系列 1 创建静态报表在各种管理系统中,报表是必不可少的。报表是数据最直观体现的方式之一以前,屌丝我是微软的忠实粉丝,所以报表工具就是微软自带的RDLC。。。不可否认的是RDLC的功能是非常强大的。能够满足绝大多数的要求。但是程序猿的天性就是爱折腾,爱摸索,喜欢玩点新东西,所以我就想边学边写一个XtraReport 系列。当然也是因为看到我们伟大的Dx论坛没有人写,自己就当一次敢于吃螃蟹的人。哈哈。所以,就从今天开始咯,有空就写写,每次都会附上Demo。菜鸟写的,有不对的希望指正。注:XtraReports 系列是根据XtraReport帮
        
阅读全文
 
            
        
        
            
    委托的基本理解与使用
    
            
摘要:委托的基本理解与使用委托本身是一种引用类型,它保存的也是托管堆中对象的引用,只不过这个引用比较特殊,他是对方法的引用。事件本身也是委托,他是委托组,C#中提供了关键字event来对事件进行特别区分的。一、了解委托的实质: 1.委托是方法指针 2.委托是一个类,当对其进行实例化的时候,要将引用方法作为它的构造方法的参数 示例:设计一个点对点文件传输,有以下几个基本功能: 1.传输文件 2.按照百分制通知传输进度 3.传输类能同时被控制台应用程序和Winform应用程序使用 分析:由于要让通知本身能被控制台应用程序和Winform应用程序使用,因此设计的这个文件传输类在进...
        
阅读全文
 
            
        
        
            
    精简版StringBuilder,提速字符串拼接
    
            
摘要:精简版StringBuilder,提速字符串拼接写目的在频繁的字符串拼接中,为了提升程序的性能,我们往往会用StringBuilder代替String+=String这样的操作;而我在实际编码中发现,大部分情况下我用到的只是StringBuilder的Append方法;一些极端的情况下,我希望我的程序性能更高,这时从StringBuilder入手是一个不错的主意;所以我希望用一种简单的方案代替StringBuilder,我将这个方案命名为QuickStringWriter;方案定义对于StringBuilder来说他除了Append之外还会有更多的方法,比如Insert,AppendForma
        
阅读全文
 
            
        
        
            
    绘制的滑块条
    
            
摘要:绘制的滑块条Trackbar见了很多种,每种播放器的都有它自己风格的Trackbar,鄙人最近在写一个属于自己的播放器,但是不想使用VS工具箱里面的那个Trackbar,于是上网看了一下资料,自己也模仿地写了一个。 其实写这个控件,关键就是用GDI+来绘图,对于这个Trackbar控件必要的属性和行为(包括方法、事件),一个简单的Trackbar就能做出来了。感觉这个就是一个GDI+章节的练习吧。 我写的这个Trackbar是继承Control类的,不是TrackBar,也不是UserControl类,又不是ScrollableControl类。Trackbar有以下外放的属性MinVal..
        
阅读全文
 
            
        
        
            
    LinqToXml高级用法介绍
    
            
摘要:LinqToXml高级用法介绍一、函数构造什么是函数构造?其是指通过单个语句构建XML树的能力。那么它有什么作用呢?作用1、用单个表达式快速创建复杂的XML树见实例代码CreateXml( ):public static XElement CreateXml() { XElement emp = new XElement("Employees", new XElement("Employee",new XAttribute("id","1"), ...
        
阅读全文