2011年11月27日
摘要: 前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。在C#中,关键字lock定义如下:lock(expression) statement_block expression代表你希望跟踪的对象,通常是对象引用。 如果你想保护一个类的实例,一般地,你可以使用this; 如果你想保护一个静态变量( 阅读全文
posted @ 2011-11-27 22:02 peter_zhang 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可。(线程入口使程序知道该让这个线程干什么事)在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就开始执行ThreadStart所代表或者说指向的函数。 打开你的VS.net,新建一个控制台应用程序(Console Application),编写完全控制一个线程的代码示例://ThreadTest.csusingSystem;usingSystem.Threading;n 阅读全文
posted @ 2011-11-27 22:01 peter_zhang 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。什么是多线程?多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。多线程的好处:可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。 多线程的不利方 阅读全文
posted @ 2011-11-27 22:00 peter_zhang 阅读(188) 评论(0) 推荐(0) 编辑
  2011年8月3日
摘要: .↓这是手工换行符,最好的办法就是使用查找与替换, Ctrl+F查找,输入^l(高级-->特殊格式-->手工换行符) ,替换为^p(高级-->特殊格式-->段落标记) ,替换所有.就行了. 阅读全文
posted @ 2011-08-03 15:32 peter_zhang 阅读(256) 评论(0) 推荐(0) 编辑
  2011年6月30日
摘要: 如果数据表本身并不内含自动递增编号的字段时,要怎么做才能够让SELECT查询结果额外增加自动递增序号呢?下列五种方法供您参考: USE test; GO /* 方法一*/ SELECT 序号= (SELECT COUNT(客户编号) FROM 客户 AS LiMing WHERE LiMing.客户编号<= Chang.客户编号), 客户编号,公司名称 FROM 客户 AS Chang ORDER BY 1; GO /* 方法二: 使用SQL Server 2005 独有的RANK() OVER () 语法*/ SELECT RANK() OVER (ORDER BY 客户编号 DESC 阅读全文
posted @ 2011-06-30 18:51 peter_zhang 阅读(1248) 评论(0) 推荐(0) 编辑
  2011年6月21日
摘要: 比较经典的为C# Winform程序设置登录窗体先启动,成功后再启动主窗口。修改项目的Program.cs文件static class Program { [STAThread] static void Main() { try {Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); frmLogin frm = new frmLogin(); //登录 if (frm.ShowDialog() == DialogResult.OK) { Application.Run(n 阅读全文
posted @ 2011-06-21 18:07 peter_zhang 阅读(1286) 评论(0) 推荐(0) 编辑
  2011年2月24日
摘要: <style> #warp { position: absolute; width:800px; height:400px; left:50%; top:50%; margin-left:-400px; margin-top:-200px; border: solid 3px red; } </style> <body> <div id=warp>Test</div> </body> 阅读全文
posted @ 2011-02-24 16:58 peter_zhang 阅读(435) 评论(0) 推荐(0) 编辑
  2011年1月25日
摘要: 第一步:新建一个解决方案 demoSolution,添加一个Windows控件库项目,我们起名为demoActiveX。为便于阅读,我们更改控件名字为demoControl.cs,然后拖动一个textBox控件到窗体上。第二步:在demoControl类下新建公共方法Test,用于实现控件与客户端脚本的互操作, public void Test() { MessageBox.Show("你输入的内容为:" + this.textBox1.Text); }第三步:打开AssemblyInfo.cs修改程序集信息。引用System.Security命名空间,并添加[assembly : Allow 阅读全文
posted @ 2011-01-25 23:03 peter_zhang 阅读(913) 评论(0) 推荐(0) 编辑
  2011年1月24日
摘要: asp:datalist id="DataList1" style="Z-INDEX: 102; LEFT: 5px; TOP: 16px" runat="server" ItemStyle-VerticalAlign="Top"RepeatColumns="2" RepeatDirection="Vertical" CellPadding="3" Width="570" HeaderStyle-BackColor="#aaaadd"SelectedItemStyle-BackColor="AntiqueWhite" RepeatLayout="Table"HeaderTemplate 阅读全文
posted @ 2011-01-24 11:21 peter_zhang 阅读(656) 评论(0) 推荐(0) 编辑
  2011年1月21日
摘要: this.pictureBox1.Image = new Bitmap((new System.Net.WebClient()).OpenRead(url)); 阅读全文
posted @ 2011-01-21 16:38 peter_zhang 阅读(1500) 评论(2) 推荐(0) 编辑