C#
文章平均质量分 81
zy__
这个作者很懒,什么都没留下…
展开
-
WCF (Windows Communication Foundation) Overview
WCF (Windows Communication Foundation) 微软提供的为整合多种编程平台,配置和部署网络分布式运行环境的一种服务。WCF 架构:WCF 是基于消息通信的,WCF Client 和 WCF Service 互相发送消息,但Client 和 Service 的定义并不是绝对的。一般来说发送请求的一方被定义为Client,而响应请求的一方被定义为Ser原创 2012-11-17 12:08:13 · 866 阅读 · 0 评论 -
C# 并行编程 之 互斥锁的使用
基本的使用在并行编程中,访问临界区是经常会遇到的问题,加锁,释放锁是经常会使用到的解决方式。原创 2015-05-15 10:07:52 · 7522 阅读 · 0 评论 -
C# 并行编程 之 轻量级手动重置事件的使用
简单介绍如果预计操作的等待的时间非常短,可以考虑使用轻量级的手动重置事件,ManualResetEventSlim。它可以发出信号和等待事件。从名称和使用方式上看,它主要是提供以人为本的操作方式,在基于人对程序运行过程非常了解的情况下,由人控制整个同步的过程。原创 2015-05-20 09:10:18 · 3982 阅读 · 0 评论 -
C# 并行编程 之 Barrier的使用 - 通过屏障同步并发任务
Barrier 是 .Net 提供的一直并发的机制,它允许多个任务同步他们不同阶段的并发工作。原创 2015-05-14 09:28:41 · 7360 阅读 · 0 评论 -
C# 并行编程 之 并发集合 (.Net Framework 4.0)
此文为个人学习《C#并行编程高级教程》的笔记,总结并调试了一些文章中的代码示例。 在以后开发过程中可以加以运用。对于并行任务,与其相关紧密的就是对一些共享资源,数据结构的并行访问。经常要做的就是对一些队列进行加锁-解锁,然后执行类似插入,删除等等互斥操作。 .NetFramework 4.0 中提供了一些封装好的支持并行操作数据容器,可以减少并行编程的复杂程度。基本信息原创 2015-05-08 10:15:29 · 28079 阅读 · 0 评论 -
C#中 一个多线程框架
c#提供了丰富的多线程操作,为编程带来了极大的便利,但如果使用不当也会带来各种各样的麻烦。这里把C#中多线的操作进行了一下简单的封装,使它对外提供的接口简洁,易于控制。保留一下的代码片段,以备日后查用。using System;using System.Collections.Generic;using System.Text;using System.Threa原创 2015-04-20 08:26:55 · 7126 阅读 · 0 评论 -
C# 并行编程 之 命令式任务并行 (.Net Framework 4.0)
此文为个人学习C#并行编程高级教程的笔记,总结并调试了一些文章中的代码示例。 在以后开发过程中可以加以利用。原创 2015-04-22 08:58:21 · 3345 阅读 · 0 评论 -
C#中 Thread类的使用
基本的 Thread 框架基本的 Thread 程序结构,由工作函数,start 和 join 组成Thread类是比较常用的一个类,这里总结了一些基本的使用方法和程序示例,以备以后查用。https://msdn.microsoft.com/zh-cn/library/system.threading.thread.aspxusing System;using原创 2015-02-12 17:32:58 · 5029 阅读 · 0 评论 -
C# 进程间通信 (Process Communication in C#)
http://www.cnblogs.com/yukaizhao/archive/2011/08/04/system-io-pipes.htmlhttp://www.cnblogs.com/jonneydong/archive/2012/03/02/2418743.htmlhttp://www.cnblogs.com/vir56k/archive/2011/07/12/2103994.ht原创 2013-12-04 08:12:23 · 9496 阅读 · 0 评论 -
25 C# 第二十章 平台互操作性和不安全的代码
概述C#虽然功能强大,但在某些时刻必须也要对内存和指针进行操作。 C#中一共有三种方式:1) 通过平台调用(P/Invoke)来调用非托管DLL所公开的API。2) 通过不安全的代码,它允许我们访问内存地址和指针。3) 通过COMInterop(COM 互操作),但此处不进行描述。平台调用1) 外部函数的声明确定了要调用的目标函数后,P/Invo原创 2013-09-29 08:45:34 · 910 阅读 · 0 评论 -
C# 并行编程 之 异步编程模型
异步编程模型的使用原创 2015-06-17 09:21:50 · 1666 阅读 · 0 评论 -
C# 并行编程 之 限制资源的并发访问 使用SemaphoreSlim
概要当多个任务或线程并行运行时,难以避免的对某些有限的资源进行并发的访问。可以考虑使用信号量来进行这方面的控制(System.Threading.Semaphore)是表示一个Windows内核的信号量对象。如果预计等待的时间较短,可以考虑使用SemaphoreSlim,它则带来的开销更小。.NetFrameWork中的信号量通过跟踪进入和离开的任务或线程来协调对资源的访问。信号量需要知道原创 2015-06-01 08:40:49 · 6383 阅读 · 0 评论 -
C# 并行编程 之 原子操作
概要当多个任务对一个int 型整数进行自增操作时,(是int简单类型而不是Integer对象),也需要用到同步方法。但如果这时使用Lock,Moniter或SpinLock时总是显得得不偿失。一个自增操作的开销非常小,但此时加锁,等待,解锁操作的开销远远大于一个自增的操作。这时可以考虑使用 Interlocked类,它提供了原子操作。而且需要的代价非常低,简单轻便。原创 2015-06-01 08:43:06 · 9946 阅读 · 0 评论 -
WCF (Windows Communication Foundation) Create & Implement a WCF Service
一个WCF 程序通常包含三个部分,WCF Service 程序集, WCF Service Host 程序集, WCF Client 程序集。WCF Service 程序集:实现此WCF服务主要功能的程序集合。WCF Service Host 程序集:一个可执行文件或是一个服务,能够运行在系统中,作为WCF Service的载体。WCF Client 程序集:通过Proxy可以原创 2012-11-28 08:37:41 · 1035 阅读 · 0 评论 -
WCF (Windows Communication Foundation) Create & Implement a WCF Client
创建一个 WCF Client 也可以通过2种方式,直接使用代码 或 使用工具来创建。(源代码实例下载)方式 一:直接使用代码第一步:创建一个简单的 Windows Console 工程。加入一个和WCF Service端一致的接口文件。其中也需要引入 System.Model和使用关键字 [ServiceContract]来描述接口。原创 2012-12-21 08:38:21 · 890 阅读 · 0 评论 -
WCF (Windows Communication Foundation) Create & Implement a WCF Host
WCF (Windows Communication Foundation) 实现一个 WCF 的 Host,这也是介绍WCF 实现的最后一篇。这样通过介绍 WCF 的架构,分部分介绍WCF Server, Client,Host,可以对整个WCF 有个总体的印象。但这里内容非常浅显,在实际的项目中还需要了解更多的技术细节。当我们定义并实现了WCF Service 以后,我们原创 2012-12-21 09:24:13 · 565 阅读 · 0 评论 -
C# 并行编程 之 ThreadPool的基本使用
概要一个托管线程的创建需要数千个CPU周期,并且当发生线程切换时也会带来明显的开销。考虑线程的重用,避免不断重复创建新的线程是提高系统效率的一种方式。线程池是一种提供效率的方式,它创建好一些线程由线程池引擎管理,开发者将需要处理的业务或操作封装成为【工作项】工作项被传递给线程池队列,由线程池中的不同的工作线程挑选并执行。当执行完毕后,线程并不被销毁,而是继续选择其他的工作项。代码示例using Sy原创 2015-06-11 08:43:28 · 1291 阅读 · 0 评论 -
C# 并行编程 之 PLINQ 执行MapReduce算法
基本信息MapReduce(映射和规约)也称 Map/Reduce 或 Map & Reduce,充分运用并行方式处理大数据集。原创 2015-06-08 08:49:21 · 1653 阅读 · 0 评论 -
C# 并行编程 之 PLINQ并行度的指定 和 ForAll的使用
概要每台计算机上的物理内核数目不一样,在程序并行运行时并不是运用的内核数越多越好。某些情况下根据实际情况动态的配置会达到更好的效果。ForAll可以看做是 .NetFramework提供的一种提高效率简化编程的一种可选的操作。它本身就是并行的,主要针对的是处理无序的集合。PLINQ指定并行度指定并行度的API:WithDegreeOfParallelism(N),并行度并不是越大越好,如果运算时把C原创 2015-06-05 09:03:42 · 6836 阅读 · 0 评论 -
C# 并行编程 之 自旋锁的使用
基本信息如果持有锁的时间非常短,而且锁的粒度很精细,那么使用自旋锁会获得更好的性能。有时候,Monitor互斥锁的开销还是相当大的。但SpinLock 的与Monitor的使用形式还是基本类似的。原创 2015-05-19 08:53:16 · 10153 阅读 · 0 评论 -
C# 并行编程 之 PLINQ 规约操作和聚合函数
概要PLINQ可以简化对一个序列或一个组中所有成员应用同一个函数的过程,这个过程称之为规约操作。类似Sum()函数就是一个规约操作。PLINQ提供一个可重载Aggregate的接口,这里用户可以定义自己的规约函数。原创 2015-06-04 08:10:57 · 1960 阅读 · 0 评论 -
C# 并行编程 之 PLINQ 基本使用
PLINQ SummaryLINQ (LINQ) Language Integrated Query 可以方便的查询并处理不同数据源的数据。PLINQ Parallel LINQ不光拥有LINQ的功能,还添加了并行操作的接口,以方便使用并提高效率。更详细的信息: https://msdn.microsoft.com/zh-cn/library/dd460688(v=vs.110).aspx原创 2015-06-01 08:44:16 · 7781 阅读 · 0 评论 -
24 C# 第十九章(二) 基于 .Net 4 TPL 的同步和线程处理模式
异步编程模式 (APM: Asynchronous Programming Model)多线程编程的主要问题:1) 监视异步操作的状态,知道何时完成。2) 线程池。避免启动和终止线程的开销。3) 避免思索。4) 为不同的操作提供原子性访问。异步编程模式就是为解决上述问题而产生的。给定一个要长时间运行的同步方法X(),APM使用一个BeginX(原创 2013-09-23 08:41:07 · 1410 阅读 · 0 评论 -
26 C# 第二十一章 CLI
CLI (Common Language Infrastructure) 公共语言基础结构C#生成的不是处理器能直接解释的指令,它生成的是一种中间语言指令,CIL (Common Intermediate Language)公共中间语言。CIL会被转换为处理器能理解的机器码。然而光有机器码还是不够的,C#还需要在一个代理的上下文中执行。负责管理C#程序执行的这个代理就是虚拟执行系统(原创 2013-09-30 08:51:12 · 953 阅读 · 0 评论 -
23 C# 第十九章(一) 基于 .Net 4 TPL 的同步和线程处理模式
22 C# 第十九章(一) 同步原创 2013-08-30 08:13:09 · 1885 阅读 · 0 评论 -
09 C# 第八章 值类型 ------ 装箱操作和枚举的使用
一,装箱操作C# 包含两种基本的数据类型,值类型和引用类型。值类型存储在栈中,引用类型存储在堆中,互不干扰。但当两者发生转换时,就产生了装箱的操作。装箱操作的步骤。1) 在堆中分配好内存。它将用于存放值类型数据。2) 内存复制,栈上的值类型的数据复制到堆上。3) 对象的接口或引用更新,指向堆上的位置。从上述步骤可以看出,装箱的实质是要把值类型转换成引原创 2013-02-21 08:26:11 · 1182 阅读 · 0 评论 -
08 C# 第七章 接口
一,接口概述接口为类提供了又一种实现多态性的方法(继承是第一种),与抽象类类似的是接口定义了一系列成员,调用者可依赖这些成员来支持一些特定的功能, 但与抽象类不同,接口不包含任何实现。接口可以看作是一种 "契约"。如果一个类继承了一个接口,那么表示这个类承诺它将提供这个接口定义的某种功能,但这个功能的具体实现则是由这个类完成的。接口只表示这个类 "会去做什么",但"怎样做" 则是由类自己实原创 2013-02-18 09:22:23 · 898 阅读 · 0 评论 -
07 C# 第六章 继承
一,继承为了最大限度的实现代码的复用,我们可以把一些有相同特征的类的属性和行为抽象出来放到一个更上层的类中,作为基类。让这些特殊的类通过某种方式拥有这个基类中的属性和行为。这种方式便是继承。C#中继承为单一继承,一个类不能从两个类进行派生。C# 中实现继承就是在类名后添加一个冒号,把基类的名称放到冒号后面。class BaseA{ public Name(原创 2013-02-14 19:07:15 · 5280 阅读 · 0 评论 -
11 C# 第十章 异常
书中关于异常介绍了一些处理原则,还是挺实用的,这里记下来以后可以参考一下。但原则归原则,工作中的实际情况千差万别,有时候要权衡一下,活学活用吧。异常处理的原则:只捕捉(处理)能处理的异常。举例:当程序捕捉到一个异常,这个异常有两种可能性,一是系统级别的,二是和我们要做的业务相关的。如果要是和我们的业务相关的,比如我们打开一个要操作的目标文件失败了,等等,这个就是我们自己程序原创 2013-03-01 14:00:23 · 580 阅读 · 0 评论 -
10 C# 第九章 引用类型 ------ 垃圾回收和资源清理
这里的内容主要是关于引用类型的资源释放的,概念性的东西较多,有时候程序在退出时出现异常不好定位时,可以考虑一下是不是这方面的问题。垃圾回收垃圾回收是一个"运行时"的核心功能,它的作用是回收不再被引用的对象所占用的内存。这里垃圾回收只负责回收内存,不负责清理资源(例如:文件句柄,数据库连接,网络端口等)垃圾回收还会根据是否存在任何引用来决定要清除什么。垃圾回收只针对对象,分配在堆上的内存原创 2013-02-28 09:17:06 · 1207 阅读 · 0 评论 -
06 C# 第四章 方法和参数
方法和参数内容比较少,只是整理一下,留个印象吧。一个最简单的方法调用:命名空间:就是一种分类嵌套机制,按照自己程序的业务需要把类分门别类的组织起来。很有意思的是命名空间中可以包含句点, 它使命名空间 "显得" 层次分明,但编译器认为所有的命名空间都在同一个层次上,没有包含关系。例如:System.Collection.Generics 和 System.Co原创 2013-02-04 08:59:28 · 1525 阅读 · 0 评论 -
12 C# 第十一章 泛型
泛型概述: 目的: 通过泛型可以定义类型安全的数据结构,而无须使用实际的数据类型。使相同算法可以应用于不同的数据类型,而无须复制类型特定的代码。与C++中的模板在语法上比较类似。语法: public class Stack{ private T[] m_Item; public void Push(T data) { } publ原创 2013-03-22 08:17:31 · 919 阅读 · 0 评论 -
13 C# 第十二章 委托
委托概述:与C/C++中的函数指针类似,把方法用对象封装起来,以便在运行时间接的绑定该方法。委托的使用:关键字: delegatepublic delegate bool ComparsonHandler(int x, int y);实例程序:using System;using System.Collections.Generic;usin原创 2013-03-29 08:38:10 · 676 阅读 · 0 评论 -
22 C# 第十八章 TPL 并行编程
C# TPL(Task Parallel Library)和PLINQ(Parallel LINQ) 并行编程是.Net4 为多线程编程引入的新的API。一: Task 线程的基本使用关于Action委托: 它是 .Net 定义的一种委托类型。public delegate void Action(): 封装一个方法,该方法不具有参数并且不返回值。pu原创 2013-08-12 09:24:08 · 7537 阅读 · 0 评论 -
21 C# 第十七章(三) 使用动态对象
使用动态对象使用动态对象进行编程,开发人员可以用一个动态调度机制对设想的操作进行编码。"运行时" 会在程序执行时对这个机制进行解析,而不是由编译器在编译时验证和绑定。一个简单的实例 来自MSDN using System;namespace DynamicExamples{ class Program { static voi原创 2013-07-22 08:35:05 · 5193 阅读 · 0 评论 -
20 C# 第十七章(二) 特性
特性(attribute)这里把书中的叙述和来自MSDN信息整理在一起。其中一些实例代码比较实用这里也保存下来方便以后自己参考使用。特性的概念和用途MSDN 信息特性定义: 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集、类型、方法、属性等)相关联。给某个类或函数,属性,或模块附加的信息声明。元数据:是有关在程序中定义的类型的信息。 所有的 .NE原创 2013-07-15 13:41:07 · 1004 阅读 · 0 评论 -
18 C# 第十六章 集合的使用
这里主要整理了一些集合使用的例子,便于在工作时查找和使用。这些段代码主要来自 MSDN。List与数组有相似的属性,但随着元素的增加,其容量也会自动的扩展。当然也可以通过 TrimToSize或 Capacity来缩小其空间。MSDN 代码实例: List_Sampleusing System;using System.Collections.Gen原创 2013-06-26 08:11:46 · 1116 阅读 · 0 评论 -
19 C# 第十七章(一) 反射
反射的概念,用处概念:反射是指对一个程序集中的元数据进行检查的过程。用处:1) 访问程序集中类型的元数据。包括像完整的类型名,成员名的构造,及对一个构造进行修饰的特性。2) 使用元数据,在运行时动态调用一个类型成员,而不是编译时绑定。3) 枚举程序集中的所有类型,并搜索满足特定条件的类型。使用 System.Type 访问元数据基本功能原创 2013-07-10 08:21:07 · 885 阅读 · 0 评论 -
17 C# 第十五章 Linq标准查询的使用
这里主要收集了一些查询表达式的基本用法,例子短小,方便以后参考使用。1, 查询表达式概述什么是查询表达式, 还是以一个实际的例子来描述一下。例子中会把它和查询运算符加以区分。实例1:using System;using System.Collections.Generic;using System.Linq;using System.Text;na原创 2013-06-20 08:43:16 · 897 阅读 · 0 评论 -
15 C# 第十三章 事件和委托(二) 使用事件
delegate 和 event 他们的定义和使用有点类似,会有点让人迷惑。多播委托有几个问题(委托链中的异常,委托链中的返回值,委托空值的检查)这里可以通过分析事件怎样解决他们来了解事件与委托的区别,使用当然看具体问题来定未必事件就是比委托好的解决方式。事件的使用大致分为这样几步:1) 定义一个委托类型2) 定义一个事件类型(在委托类型前加原创 2013-05-23 12:15:07 · 885 阅读 · 0 评论