自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

转载 c#线程池详解

<br />在这里你可以学到Microsoft研究CLR实现线程池的原理机制,从而更灵活的处理CLR在实际代码应中线程池的问题,下面我们来看看吧。<br />CLR教程之线程池的产生<br />当 CLR 初始化时,其线程池中不含有线程。当应用程序要创建线程来执行任务时,该应用程序应请求线程池线程来执行任务。线程池知道后将创建一个初始线程。该新线程经历的初始化和其他线程一样;但是任务完成后,该线程不会自行销毁。相反,它会以挂起状态返回线程池。如果应用程序再次向线程池发出请求,那么这个挂起的线程将激活并执行任

2010-08-24 18:32:00 612

转载 c#正则表达式使用详解

<br />正则表达式(Regular expressions)是一套语法匹配规则,各种语言,如Perl, .Net和Java都有其对应的共享的正则表达式类库。在.Net中,这个类库叫做Regex。<br />简单的说,Regex是从字符窗中查找匹配字符串的应用类。通过Regex,编程人员能够非常方便的从一段数据中提取自己所需要的数据信息。举一个简单的例子,让大家对Regex有个大概的了解:<br />Regex regex = new Regex(@"d+"); <br />Match m = regex

2010-08-24 16:26:00 513

原创 c#多线程调用有参数的方法

<br />将线程执行的方法和参数都封装到一个类里面。通过实例化该类,方法就可以调用属性来实现间接的类型安全地传递参数。<br />using System; using System.Threading; //ThreadWithState 类里包含了将要执行的任务以及执行任务的方法 public class ThreadWithState { //要用到的属性,也就是我们要传递的参数 private string boilerplate;

2010-08-20 17:32:00 1791

原创 深入理解c#中的lock

<br />lock只能使用引用类型,严格来说是需要对象的实例。<br />即使对象在意义上是相同的,但是如果不是ReferenceEquals的话,那么将作为两个实例来对待,那么C# lock 的就不是同一个东西。也就是说,当你以为这个 lock 生效的话,它其实在做无用工。<br />测试用例:<br />using System;using System.Threading;class TTT{ private hello test; public TTT(he

2010-08-20 17:31:00 537

原创 Socket Shutdown

如果当前使用的是面向连接的 Socket,则必须先调用 Shutdown 方法,然后才能关闭 Socket。这可以确保在已连接的套接字关闭之前,已发送和接收该套接字上的所有数据。调用 Close 方法可释放所有与 Socket 关联的托管资源和非托管资源。在关闭 Socket 后请不要尝试重用它。下表显示对于 how 参数有效的 SocketShutdown 枚举值。值 说明 发送 禁用此 Socket 上的发送。 接收 禁用此 Socket 上的接收。 两者 同时禁用此 Socket 上的发送和接收。 将

2010-08-18 19:37:00 877

转载 C#中,Dictionary的使用方法

<br />在C#中,Dictionary提供快速的基于兼职的元素查找。当你有很多元素的时候可以使用它。它包含在System.Collections.Generic名空间中。<br />在使用前,你必须声明它的键类型和值类型。<br />详细说明<br />必须包含名空间System.Collection.Generic <br />Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值) <br />键必须是唯一的,而值不需要唯一的 <br />键和值都可以是任何类型(比如:strin

2010-08-17 15:11:00 1109

转载 .net3.5与.net2.0 Socket性能比较

<br />在 .NET Framework 2.0 版本中,System.Net.Sockets 命名空间提供了一个几乎拥有 Windows® WinSock Win32® API 的所有功能的 Socket 类。该功能所属的类包含为托管代码开发人员设计的各种方法和属性。在 Socket 上,有一组包括 Send 和 Receive 在内的同步方法,具备针对各种情况的参数重载。这些同步方法不仅易于使用,而且非常适合于使用套接字的简单网络任务。Socket 上还有一组基于异步编程模型 (APM) 的异步方法

2010-08-16 11:20:00 1664

原创 SocketAsyncOperation 枚举

最近使用此上下文对象执行的异步套接字操作的类型。 成员名称说明 None没有套接字操作。 Accept一个套接字 Accept 操作。 Connect一个套接字 Connect 操作。 Disconnect一个套接字 Disconnect 操作。 Receive一个套接字 Receive 操作。 ReceiveFrom一个套接字 ReceiveFrom 操作。 ReceiveMessageFrom一个套接字 ReceiveMessageFrom 操作。 Send一个套接字 Send 操作。 SendPack

2010-08-14 17:37:00 2192

转载 静态方法和实例化方法的区别

<br />这是一个经常被时时提出来的问题,很多时候我们以为理解了、懂了,但深究一下,我们却发现并不懂。 <br />方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简单的回答两者定义的区别,静态方法不需要new就可以使用 实例化方法需要new了以后才可以使用。。。。我们真的理解了吗? <br />从实际项目开发说起,这里有开发项目的三种方式: <br />开发项目中把BLL和DAL分开,在BLL调用DAL的代码。 <br />一、在DAL中使用静态方

2010-08-13 17:08:00 451

转载 System.Buffer

<br />System.Buffer 以字节数组(byte[])方式操作基元类型数组,相当于 C 语言的 (char*)int_pointer 指针操作。<br /><br />1. Buffer.ByteLength<br /><br />该方法范围基元类型数组累计有多少字节组成。<br />var bytes = new byte[] { 1, 2, 3 };var shorts = new short[] { 1, 2, 3 };var ints = new int[] { 1, 2, 3

2010-08-10 15:25:00 1062

原创 SocketAsyncEventArgs.SetBuffer

<br />设置要用于异步套接字方法的数据缓冲区。<br />public void SetBuffer( byte[] buffer, int offset, int count)<br />buffer:要用于异步套接字方法的数据缓冲区,类型为Byte[]。<br />offset:数据缓冲区中操作开始位置处的偏移量,以字节为单位,类型为Int32。<br />count:可在缓冲区中发送或接收的最大数据量(以字节为单位),类型为Int32。<br />注意:offset 和 cou

2010-08-10 08:52:00 4880

原创 SocketAsyncEventArgs.BytesTransferred 属性

属性值:在套接字操作中传输的字节数,类型为Int32。此属性提供在可接收或发送数据的异步套接字操作传输的字节数。如果从读取操作返回零,则说明远程端已关闭了连接。

2010-08-09 14:24:00 2656

转载 C#中异步和多线程的区别

C#中异步和多线程的区别是什么呢?异步和多线程两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为异步和多线程是等同的概念。但是,异步和多线程还是有一些区别的。而这些区别造成了使用异步和多线程的时机的区别。异步和多线程的区别之异步操作的本质所有的程序最终都会由计算机硬件来执行,所以为了更好的理解异步操作的本质,我们有必要了解一下它的硬件基础。 熟悉电脑硬件的朋友肯定对DMA这个词不陌生,硬盘、光驱的技术规格中都有明确DMA的模式指标,其实网卡、声卡、显卡也是有DMA功能的。D

2010-08-05 11:43:00 700

转载 c# 多线程 --Semaphore(信号量)

<br />信号量 Semaphore<br />类似互斥锁,但它可以允许多个线程同时访问一个共享资源<br />通过使用一个计数器来控制对共享资源的访问,如果计数器大于0,就允许访问,如果等于0,就拒绝访问。计数器累计的是“许可证”的数目,为了访问某个资源。线程必须从信号量获取一个许可证。<br />通常在使用信号量时,希望访问共享资源的线程将尝试获取一个许可证,如果信号量的计数器大于0,线程将获取一个许可证并将信号量的计数器减1,否则先线程将阻塞,直到获取一个许可证;当线程不再需要共享资源时,将释放锁拥

2010-08-05 10:23:00 1736

转载 Windows Socket五种I/O模型

<br />如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综合考虑到程序的扩展性和可移植性等因素,作出自己的选择。<br />我会以一个回应反射式服务器(与《Wind

2010-08-04 16:55:00 346

原创 Stack

using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace StackTest{ class Program { static void Main(string[] args) { Stack st = new Stack();

2010-07-30 10:35:00 243

原创 EventArgs、EventHandler

    EventArgs是包含事件数据的类的基类,用于传递事件的细节。    EventHandler是一个委托声明如下    public delegate void EventHandler( object sender , EventArgs e )    注意这里的参数,前者是一个对象(其实这里传递的是对象的引用,如果是button1的click事件则sender就是button1),后面是包含事件数据的类的基类。    定义委托类型类型的事件:        public delegate vo

2010-07-30 10:06:00 686

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除