自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(0)
  • 资源 (71)
  • 收藏
  • 关注

空空如也

讲故事谈.NET委托一个C#睡前故事

从前,在南方一块奇异的土地上,有个工人名叫彼得,他非常勤奋,对他的老板总是百依百顺。但是他的老板是个吝啬的人,从不信任别人,坚决要求随时知道彼得的工作进度,以防止他偷懒。但是彼得又不想让老板呆在他的办公室里站在背后盯着他,于是就对老板做出承诺:无论何时,只要我的工作取得了一点进展我都会及时让你知道。彼得通过周期性地使用“带类型的引用”(原文为:“typed reference” 也就是delegate??)“回调”他的老板来实现他的承诺,如下: class Worker { public void Advise(Boss boss) { _boss = boss; } public void DoWork() { Console.WriteLine(“工作: 工作开始”);

2009-03-11

NET平台下可复用的Tcp通信层实现

2006年已经来临,回首刚走过的2005,心中感慨万千。在人生和生活的目标上,有了清晰明确的定位,终于知道了自己喜欢什么样的生活,喜欢什么样的生活方式;在技术上,成熟了不少,眼界也开阔的不少,从面向对象到组件、从.Net到J2EE、从微软到开源,颇有收获。特别值得一提的是,认识了Rod Johnson这个大牛人,也终于在自己的项目中正式使用Spring.net框架来开发了,这确实是一个优秀的框架。而在已经到来的2006年,我有一个主要目标就是B/S应用开发,来填补自己在企业级开发上的另一半空白。 以前就很想将自己在Tcp通信层的开发心得、经验共享出来,但一直没有实现,究其原因,还是自己太懒了。今天终于找到一个时机,写下这篇文章,也算是对2005年的另一种形式的回忆吧。 绝大多数C/S(包括多层)结构的系统中,终端与服务器的通信都是通过Tcp进行的(使用Udp的也有一些,但是其相对于Tcp简单许多,所以不在这里的讨论之列)

2009-03-11

c#(Socket)异步套接字代码示例

下面的示例程序创建一个连接到服务器的客户端。该客户端是用异步套接字生成的,因此在等待服务器返回响应时不挂起客户端应用程序的执行。该应用程序将字符串发送到服务器,然后在控制台显示该服务器返回的字符串。 C# using System; using System.Net; using System.Net.Sockets; using System.Threading; using System.Text;

2009-03-11

NET:一段比较经典的多线程学习代码

一段比较经典的多线程学习代码。   1、用到了多线程的同步问题。   2、用到了多线程的顺序问题。   如果有兴趣的请仔细阅读下面的代码。注意其中代码段的顺序,思考一下,这些代码的顺序能否互相调换,为什么?这应该对学习很有帮助的。为了演示,让所有的线程都Sleep了一段时间。

2009-03-11

c#多线程线程池和异步编程

我们将在这里进一步讨论一些.NET类,以及他们在多线程编程中扮演的角色和怎么编程。它们是:   System.Threading.ThreadPool 类   System.Threading.Timer 类   如果线程的数目并不是很多,而且你想控制每个线程的细节诸如线程的优先级等,使用Thread是比较合适的;但是如果有大量的线程,考虑使用线程池应该更好一些,它提供了高效的线程管理机制来处理多任务。 对于定期的执行任务Timer类是合适的;使用代表是异步方法调用的首选。

2009-03-11

跨线程进行Windows窗体控件的访问

访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。 .NET Framework 有助于在以非线程安全方式访问控件时检测到这一问题。在调试器中运行应用程序时,如果创建某控件的线程之外的其他线程试图调用该控件,则调试器会引发一个 InvalidOperationException,并提示消息:“从不是创建控件 control name 的线程访问它。

2009-03-11

多线程,重叠IO,异步读写 命名通道服务器源码

#include <windows.h> #include <stdio.h> #define NUM_PIPES 5 #define BUFFER_SIZE 256 void main( void ) { HANDLE PipeHandles[NUM_PIPES]; DWORD BytesTransferred; CHAR Buffer[NUM_PIPES][BUFFER_SIZE]; INT i; OVERLAPPED Ovlap[NUM_PIPES]; HANDLE Event[NUM_PIPES]; // 对每一个通道句柄实例来说,当它进行在读写操作时,代码必须维持通道的当前状态 // 这个可以用DataRead这个变量数组来实现.当我们确定了管道的当前状态,代码能够 // 确定下一个I/O操作是什么 BOOL DataRead[ NUM_PIPES ]; DWORD Ret; DWORD Pipe;

2009-03-11

C#.net同步异步SOCKET通讯和多线程总结

服务端: using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; Thread mythread ; Socket socket; // 清理所有正在使用的资源。 protected override void Dispose( bool disposing ) { try   {    socket.Close();//释放资源    mythread.Abort ( ) ;//中止线程   }   catch{ }

2009-03-11

Socket开发之异步Socket

.NET Socket开发之异步Socket   在基于.NET的网络服务端的开发中,我们用到和听到的最多的恐怕就是异步Socket了。异步Socket的性能比同步高出很多,但是编写代码比较复杂。因此异步Socket也是网络上讨论比较多的话题。   今天,我们就来讨论一下如何用异步Socket开发网络应用。在此之前我们先讨论两个问题。

2009-03-11

[C#通信二]C#.net同步异步SOCKET通讯和多线程总结

C#.net同步异步SOCKET通讯和多线程总结 同步套接字通信 Socket支持下的网上点对点的通信 服务端实现监听连接,客户端实现发送连接请求,建立连接后进行发送和接收数据的功能 服务器端建立一个socket,设置好本机的ip和监听的端口与socket进行绑定,开始监听连接请求,当接收到连接请求后,发送确认,同客户端建立连接,开始与客户端进行通信。

2009-03-11

C#多线程应用技术面对面探讨[图]

实例程序说明   本文的实例程序包括一个列表框、三个按钮。程序使用一个新的线程来运行一个后台处理,结果在列表框中显示。按钮button1启动一个计算平方的线程。按钮button2停止后台处理线程。按钮button3退出程序。程序运行情况如图1所示。

2009-03-11

C#与.NET对多线程的处理

C#和.NET基类为开发多线程应用程序所提供的支持。我们将简要介绍Thread和ThreadPool类以及各种线程支持,再用两 介示例来说明线程的规则。然后论述线程同步时会出现的问题。 .如何开始一个线程 .提供线程的优先级 .通过同步控制对对象的访问

2009-03-11

生产者与消费者(C#)

using System; using System.Threading; //我们定义一个被操作的对象的类Cell,在这个类里,有两个方法:ReadFromCell()和WriteToCell。 //消费者线程将调用ReadFromCell()读取cellContents的内容并且显示出来,生产者进程将调用WriteToCell()方法向cellContents写入数据。 public class Cell {   int cellContents; // Cell对象里边的内容   bool readerFlag = false; // 状态标志,为true时可以读取,为false则正在写入   public int ReadFromCell( )

2009-03-11

c# 线程同步: 详解lock,monitor,同步事件和等待句柄以及mutex

对于引用类型和非线程安全的资源的同步处理,有四种相关处理:lock关键字,监视器(Monitor), 同步事件和等待句柄, mutex类。 Lock关键字 本人愚钝,在以前编程中遇到lock的问题总是使用lock(this)一锁了之,出问题后翻看MSDN突然发现下面几行字:通常,应避免锁定 public 类型,否则实例将超出代码的控制范围。

2009-03-11

XmlSerializer 常见问题疑难解答(MSDN)

NET 框架中的 XmlSerializer 是一种很棒的工具,它将高度结构化的 XML 数据映射到 .NET 对象。XmlSerializer 在程序中通过单个 API 调用来执行 XML 文档和对象之间的转换。转换的映射规则在 .NET 类中通过元数据属性来表示。这一编程模型带有自己的错误类别,开发人员需要了解如何诊断这些错误。例如,元数据属性必须描述序列化程序可以处理的 XML 格式的所有变体。本文研究了在使用 XmlSerializer 构建基于 XML 的解决方案时可能发生的各种错误,并且讨论了用来诊断这些错误的技巧和工具。

2009-03-11

在.NET中实现对象序列化

自从有了XML以后,跨系统的数据交换变得越来越简单。.NET更把XML做为底层数据交换的基础,并在.NET框架中提供了强大的类库以增强XML的编程能力。这些类包含在System.Xml命名空间中。在跨系统的数据交换中,对象的序列化与反序列化是重中之重。.NET为此专门提供了一个System.Xml.Serialization命名空间用于对象的序列化。

2009-03-11

对象序列化:使用System.Xml.Serialization命名空间

要使用.NET进行对象的序列化,必须在解决方案中添加System.Xml的引用,并且在类文件中引入System.Xml.Serialization命名空间。这样就可以在文件中使用序列化所需要的各种特性了。 Imports System.Xml.Serialization   如果对XML Serialization缺少了解,请首先参考拙文:在.NET中实现对象序列化

2009-03-11

TransactionScope和分布式事务

布式事务听起来很不错,其实不然。它只是尽可能的降低数据不一致的可能性,并不能完全避免。从我的应用中来看,总数约5千万的操作,错了十几个。当然,这个错误率完全可以忍受了。不能忍受的是当你的DB在cluster(集群)当中,msdtc也会被作为一项资源出现,cluster的某些问题会诡异的导致msdtc不可用,问题排查起来是非常郁闷的。

2009-03-11

TransactionScope出错

TransactionScope 是.net 提供的可提升事务环境,开发软件的时候非常方便,但是在大数据量处理的时候,会莫名我出错,检查代码没有任何的错误 解决这个错误的方法:不用TransactionScope ,自己写一个用MSDTC的事务就可以了。

2009-03-11

微软SerialPort秘籍[SerialPort为什么死锁程序的分析]

微软 MS 死机 SerialPort CE 既然是秘籍,显然是写一些大家不常找到的,MSDN里遗漏提示大家注意的东西。 用过.net 2.0中,自带SerialPort的人,大多都遇到过。莫名其妙的执行Close的时候会死掉的问题。而Wince,mobile下,甚至Write,WriteLine的时候也会死锁。这和串口底层驱动有关。 1.Close的时候死机问题 我只是猜测,Close执行的操作是调用2个API: SetCommMask(m_hComPort,0); WaitForSingleObject(m_pThread->m_hThread,INFINITE); m_pThread=NULL; if(m_hComPort!=INVALID_HANDLE_VALUE) CloseHandle(m_hComPort); 这里的话,SetCommMask操作的时候。如果你的DeviceReceived事件没执行完,里面还有更新界面的操作。就会监听线程在等待,执行到界面操作,界面又要求关闭监听线程然后关闭串口。死锁了。

2009-03-11

.net cf 2.0 运行效率提升方法[类似WPF]

WPF,CF,C#,VB.Net,.Net,效率,CE .net慢,众所周之。为什么呢?控件多了就慢了。那最好办法就是减少控件数量,对于windows95的宣传动画,不知多少人还有印象,微软就是希望你看到的所有东西都是window,所以写了操作系统,就叫windows。给window进行分类,呈现不同的外形和行为,也就有了我们的textbox,button,picturebox之类的控件,控件也就是window,只是嵌入在一个顶层的window内部的。每个window,通过消息驱动起来,通过很多的api方法操作,设置窗体样式,响应paint消息来绘制等等。鼎盛的win时代,我们使用了vc,c++builder,vb,等众多开发工具,效率都不慢,直到.net出现,从我个人的认为,.net带来的高开发效率主要是来自对窗体的抽象,我们操作属性可以等同对control或者form进行了SetWindowText,SetWindowRect之类的方法,不需要看那些方法了。所以容易开发。但是,属性之间的彼此联动,链式反应的导致了很多不必要的界面更新,以及window的滥用,会带来大量的创建窗体句柄的开销。所以.net快不起来。

2009-03-11

Wince c#程序高效而且省电的思路【抛砖引玉】

提供一个高效的方法来处理需要实效很高的地方 在游戏开发的过程中我们一般会有一个游戏引擎:gameEngine,为了让程序响应效率最好。一般不使用mfc那套复杂的消息循环树,而是先处理逻辑然后处理消息。一般这样作: while(gameEngine.RunningState == RunningState.Run) ...{ gameEngine.Update(); Application.DoEvents(); } 可以看到。这时候系统的cpu占用率是100%。因为内部是这样作的。

2009-03-11

c#2.0 自适应尺寸的窗体方法

c#写的自适应尺寸窗体的监视类。可以用Regist和UnRegist监视和取消是否让被监视的窗体自动缩放。

2009-03-11

c++里初始化结构体的一个比较的简单方法

//常用方法 struct MYSTRUCT ...{ int i,j,q; char szName[15]; MYSTRUCT() ...{ i = j = q = 0; memset(szName,0,sizeof(szName)); } }; //我想的方法 一个初始化结构体比较省事的方法

2009-03-11

Wince开发经验分享

1.阻止进入节电状态,我们的程序运行的时候,如果不希望屏幕黑掉或者变暗。可以用这个方法。 添加引用:using System.Runtime.InteropServices; 添加一个定时器,并使用下面代码来发送虚拟键:

2009-03-11

别出心裁的禁止窗体移动。(C++)

触类旁通,你可以删除“关闭”可以禁止点击关闭,“最小化”可以禁止,虽然禁止窗体移动的文章很多了。但是不同的是,利用改变通告消息的发送者的方法无法适用于Document/View的窗体上。百思不得其解,碰到了。发现这样可以。以后在用View的时候可以这样禁止窗体移动了哦~

2009-03-11

打开新的窗体,关闭当前窗体的一个简单方法,更改主程序地方很少。不妨一试哦

FAQ吧。经常有人问如何关闭当前窗体打开新窗体。我想,需要调用Application.Run,之前是新创建线程。但现在发现这样做更好。程序几乎不用怎么改了

2009-03-11

带有消息机制的线程 - CustomMessageQueue

自己建立一个线程,需要能够有时候让他执行一下,大部分时间还是阻塞着,这时候用我这个类就最合适了!

2009-03-11

停靠工具栏 停靠工具栏 停靠工具栏

调用的地方: Form1 frm = this; ToolForm frm1 = new ToolForm(ref frm); frm1.TopLevel =false; this.Controls.Add(frm1);

2009-03-11

用C# GDI+画太极图

研究GDI+了,发现这个东东挺不错的,可以实现很多挺cool的效果,今天尝试画了一个太极图,希望看过的朋友的否极泰来

2009-02-27

用纯C#实现截取屏幕指定区域

以前在别的地方见过一个通过调用系统API实现屏幕截图的例子,从内心来说我不太喜欢在C#代码中出现这种情况,现在什么都讲“和谐”,我觉得这种做法就是破坏了我们的“和谐”代码,呵呵,开玩笑,有的时候,不通过系统API确实难以做到的。

2009-02-27

用C#绘制实时曲线图

在实际项目中我们经常需要绘制一些实时的数据图片,比如当前各公司的用水量、用电量还有播放声音视频时实时显示当前的声频等等,在我们最熟悉的任务管理器也有这么一个功能,用来表示当前CPU的使用频率,最近笔者刚刚给朋友完成了一个类似的功能图,用曲线图来实时表示一些实际数据,由于形象直观,很受客户欢迎。

2009-02-27

用C#编写网页小应用程序(Applet)

学过Java的朋友可能都听说过Java的历史:当初Java是为机顶盒设备和手持设备设计的,可惜理念在当时太朝前,结果没有被人所接受,于是Java的创始人James Gosling想到在网络上碰碰运气,当时吸引大家眼球的就是用Java编写的一个Applet,早期Java的应用很多时用来编写Applet,后来慢慢发展到J2ME/J2SE/J2EE三个分支。

2009-02-27

在服务器端得到CheckBoxList控件最后选择项的方法

查看客户端生成的HTML代码可以看出,每次点击都执行一次__doPostBack,并且将选择项的参数传递到隐藏表单域之中。 当然,通过脚本和自己的隐藏域可以很轻松得到选择项,但完全在服务器端,也可以得到。 <form name="MengXianhui" method="post" action="a.aspx?ddfg" id="MengXianhui">

2009-02-27

使用XmlDocumentXmlDataDocument类加载XML文件时如何忽略DTD验证

在XML文件含有外部DTD验证的时候,使用XmlDocument/XmlDataDocument类的Load方法会抛出如下的例外: System.Xml.XmlException: 未找到所需的 DTD 标记。 行 m,位置 n。 我们可以采用下面的方法不去加载外部资源: XmlDocument doc = new XmlDocument();

2009-02-27

HyperLink 控件控制图片宽度高度的几种方法

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load( object sender, EventArgs e )

2009-02-27

ASP.NET 绑定DataSet中的多个表

今天在论坛遇到有人问如何在ASP.NET的数据控件中如何一次绑定多个表?这个问题,平时很少看到,一般在数据绑定之前,数据都是放在一个表中的,实际上,如果表之间存在关系,绑定多个表也是可以的。下面就是 DataSet中两个表进行绑定的例子。

2009-02-27

使用JDBC连接SQL SERVER 2008的方法

使用JDBC连接SQL SERVER 2008,很多人都在问,我自己也测试几次,发现按照以前的方法连接会出现一点小问题。原因在于,SQL SERVER 2008采用了动态端口的机制,按照以前的方法连接会报告连接不了,其实端口写对了完全没有问题。连接方法如下:

2009-02-27

Silverlight2 跨域调用Web服务的方法

调用Web服务是一种常见的功能,在Silverlight2中也是可以调用别的网站的Web服务的。由于跨域访问存在安全漏洞,所以,默认情况下,Silverlight2不允许跨域进行服务的调用。要实现跨域调用Web服务,需要在被调用的Web服务的网站跟目录下放置一个策略配置文件:clientaccesspolicy.xml。该文件的内容如下:

2009-02-27

理解Oracle数据库字符集

ORACLE数据库字符集,即oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储、处理和检索数据。利用全球化支持,ORACLE为用户提供自己熟悉的数据库母语环境,诸如日期格式、数字格式和存储序列等。

2009-02-26

空空如也

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

TA关注的人

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