摘要: 使用并行编程可以同时操作多个委托,在介绍并行编程前先简单介绍一下两个泛型委托System.Func与System.Action。Func是一个能接受多个参数和一个返回值的泛型委托,它能接受0个到4个输入参数, 其中 T1,T2,T3,T4 代表自定的输入类型,TResult为自定义的返回值。public delegate TResult Func()public delegate TResult Func(T1 arg1)public delegate TResult Func(T1 arg1,T2 arg2)public delegate TResult Func(T1 arg1,T2 ar 阅读全文
posted @ 2014-03-18 14:31 armyfai 阅读(4564) 评论(0) 推荐(0) 编辑
摘要: Lambda表达式"Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量。它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。所有Lambda表达式都使用Lambda运算符=>,该运算符读作"goes to"。Lambda运算符的左边是输入参数(如果有),右边是表达式或语句块。Lambda表达式x => x * x读作"x goes to x times x"。可以将此表达式分配给委托类型,如下所示 阅读全文
posted @ 2014-03-13 12:31 armyfai 阅读(1325) 评论(0) 推荐(0) 编辑
摘要: Lambda表达式详解前言 1、天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西。 2、夸夸lambda吧:简化了匿名委托的使用,让你让代码更加简洁,优雅。据说它是微软自c#1.0后新增的最重要的功能之一。lambda简介 lambda运算符:所有的lambda表达式都是用新的lambda运算符 " => ",可以叫他,“转到”或者 “成为”。运算符将表达式分为两部分,左边指定输入参数,右边是lambda的主体。 lambda表达式: 1.一个参数:param=>expr 2.多个参数:(param-list)=>expr 上面这些东西, 阅读全文
posted @ 2014-03-13 12:25 armyfai 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 委托与发布订阅者模式 8 { 9 10 /** 11 * 机器Machine为被订阅者,维修工Repairer为订阅者 12 * 工人(订阅者)注册机器的不同事件,并注册回调函数以当相应事件发生时进行处理 13 * 不同的工人可以只关注他们各自感兴趣的事件 14 */ 15 // 机器类 16 public ... 阅读全文
posted @ 2014-03-13 11:05 armyfai 阅读(2445) 评论(2) 推荐(0) 编辑
摘要: 双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向对方发送消息。基于双工MEP消息交换可以看成是多个基本模式下(比如请求-回复模式和单项模式)消息交换的组合。双工MEP又具有一些变体,比如典型的订阅-发布模式就可以看成是双工模式的一种表现形式。双工消息交换模式使服务端回调(Callback)客户端操作成为可能。一、两种典型的双工MEP1.请求过程中的回调这是一种比较典型的双工消息交换模式的表现形式,客户端在进行服务调用的时候,附加上一个回调对象;服务在对处理该处理中,通过客户端附加的回调对象(实际上是调用回调服务的代理对象)回调客户端的操作(该操作在客户端执行)。整 阅读全文
posted @ 2014-03-11 16:46 armyfai 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 订阅发布模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态变化时,会通知所有订阅者对象,使它们能够自动更新自己的状态。 将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相应对象间的一致性,这样会给维护、扩展和重用都带来不便。当一个对象的改变需要同时改变其他对象,而且它不知道具体有多少对象需要改变时,就可以使用订阅发布模式了。 一个抽象模型有两个方面,其中一方面依赖于另一方面,这时订阅发布模式可以将这两者封装在独立的对象中,使它们各自独立地改变和复用。订阅发布模式所做的工作其实就是在解耦合。让耦合的双方都依赖于抽象,而不是依赖于具 阅读全文
posted @ 2014-03-11 15:20 armyfai 阅读(878) 评论(0) 推荐(0) 编辑
摘要: C#操作MSMQ示例,示例代码:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Messaging;namespace MessageQueues { class Program { staticvoid Main(string[] args) . 阅读全文
posted @ 2014-03-07 17:35 armyfai 阅读(1700) 评论(0) 推荐(0) 编辑
摘要: using System;using System.Collections.Generic;using System.Text;using System.Messaging;using System.Data;using System.Data.SqlClient;namespace msmq{ class Program { staticvoid Main(string[] args) { string database = args[0]; string path =".\\private$\\"+ args[1]; if (!MessageQueue.Exists(p 阅读全文
posted @ 2014-03-07 17:24 armyfai 阅读(3403) 评论(0) 推荐(0) 编辑
摘要: [csharp]view plaincopyprint?usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Runtime.Serialization.Formatters.Binary;usingSystem.IO;namespacesmsForCsharp.CRC{//////消息CRC校验算法///publicclassCRC{publicstaticStringgetCrc16Code(StringcrcString){//转换成字节数组byte[]creBytes=HexString2Byt 阅读全文
posted @ 2014-02-25 13:57 armyfai 阅读(37383) 评论(0) 推荐(0) 编辑
摘要: private static ushort[] crctab = new ushort[256]{ 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff... 阅读全文
posted @ 2014-02-25 10:22 armyfai 阅读(5385) 评论(2) 推荐(0) 编辑