- 博客(49)
- 资源 (4)
- 收藏
- 关注
转载 C#多线程学习(六) 互斥对象
如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类。我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上车。而线程与Mutex对象的关系也正是如此,线程使用Mutex.WaitOne()方法等待Mutex对象被释放,如果它
2012-04-17 15:19:11
717
转载 电脑辐射
电脑辐射----每天用电脑4-6小时的人必看中午睡觉时要记得关计算机你是否常觉得头重重的或记忆力衰退呢?趴着睡觉的时候要记的把计算机关机,不只是把屏幕关掉而已,因为只把屏幕关掉是无法杜绝辐射线的,而且我们都是趴着睡,头直接对着计算机,哪天得了老人痴呆症或脑瘤就来不及了!辐射线真的很可怕的!!小心啊~健康重于一切!计算机族的杀手---胸廓出口症常坐在计算机桌前的你,是否一坐就是好几个
2012-04-17 15:18:46
1340
转载 C#多线程学习(五) 多线程的自动管理(定时器)
Timer类:设置一个定时器,定时执行用户指定的函数。定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。初始化一个Timer对象: Timer timer = new Timer(timerDelegate, s,1000, 1000); // 第一个参数:指定了TimerCallback 委托,表示要执行的方法;// 第二个参数:一个包含回调方法要使用的信息的对象
2012-04-01 11:23:29
324
转载 C#多线程学习(四) 多线程的自动管理(线程池)
在多线程的程序中,经常会出现两种情况:一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应这一般使用ThreadPool(线程池)来解决;另一种情况:线程平时都处于休眠状态,只是周期性地被唤醒这一般使用Timer(定时器)来解决;ThreadPool类提供一个由系统维护的线程池(可以看作一个线程的容器),该容器需要 Windows 200
2012-04-01 11:22:51
358
转载 C#多线程学习(三) 生产者和消费者
前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。在C#中,关键字lock定义如下:
2012-04-01 11:21:01
337
转载 C#多线程学习(二) 如何操纵一个线程
下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可。(线程入口使程序知道该让这个线程干什么事)在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就开始执行ThreadStart所代表或者说指向的函数。打开你的VS.
2012-04-01 11:18:24
305
转载 C#多线程学习(一) 多线程的相关概念
什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。什么是多线程?多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务
2012-04-01 11:18:05
276
转载 浅谈线程池(下):相关试验及注意事项
线程池是.NET中的重要组件,几乎所有的异步功能依赖于线程池。之前我们讨论了线程池的作用、独立线程池的存在意义,以及对CLR线程池和IO线程池进行了一定说明。不过这些说明可能有些“抽象”,于是我们还是要通过试验来“验证”这些说明。此外,我认为针对某个“猜想”来设计一些试验进行验证是非常重要的能力,如果您这方面的能力略有不足的话,还是尽量加以锻炼并提高吧。CLR线程的使用与创建首先,我们准备
2012-04-01 11:17:07
445
转载 浅谈线程池(中):独立线程池的作用及IO线程池
我们简单讨论了线程池的作用,以及CLR线程池的一些特性。不过关于线程池的基本概念还没有结束,这次我们再来补充一些必要的信息,有助于我们在程序中选择合适的使用方式。独立线程池上次我们讨论到,在一个.NET应用程序中会有一个CLR线程池,可以使用ThreadPool类中的静态方法来使用这个线程池。我们只要使用QueueUserWorkItem方法向线程池中添加任务,线程池就会负责在合适的时候执
2012-04-01 11:15:39
337
转载 浅谈线程池(上):线程池的作用及CLR线程池
线程池是一个重要的概念。不过我发现,关于这个话题的讨论似乎还缺少了点什么。作为资料的补充,以及今后文章所需要的引用,我在这里再完整而又简单地谈一下有关线程池,还有.NET中各种线程池的基础。更详细的内容就不多作展开了,有机会我们再详细讨论这方面的细节。这次,还是一个“概述”性质的,希望可以说明白这方面问题的一些概念。线程池的作用其实“线程池”就是用来存放“线程”的对象池。在程序中,如果
2012-04-01 11:14:57
282
转载 『C#基础』多线程笔记「四」线程池
现在到了关于多线最简单使用的最后一篇笔记。无论从什么角度来看,每一项事物都应该有其所在的空间,而对于线程来说,线程池就是它所存在的空间,或者叫容器了。 接下来,看看这个线程池是如何使用的吧!概念:ManualResetEvent,通知一个或多个正在等待的线程已发生事件 ManualResetEvent.Set(),将事件状态设置为终止状态,允许一个或多个等待线程继续 Thr
2012-04-01 11:13:10
347
转载 『C#基础』多线程笔记「三」计时器
在多线程中,有一个比较特殊的应用,就是计时器(Timer)。我在之前的一篇笔记中说过关于Timer控件的简单用法,这里我再根据一些新找的的内容,进行一些整理与扩展。「『WPF』Timer的使用」命名空间:System.Timers.TimerSystem.Threading.TimerSystem.Windows.Forms.TimerSystem.Web.UI.Tim
2012-04-01 11:12:20
410
转载 『C#基础』多线程笔记「二」线程同步
文章结构:锁定 监视器 共享资源的同步访问 同步事件和等待句柄 多线程使用准则「MSDN」 锁定无论是程序还是数据库,只要是涉及到并发的问题,都难免会有「锁」的概念。在C#中,使用lock关键字来对某个对象实施加锁的操作。lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。lock调用 publ
2012-04-01 11:11:45
486
转载 『C#基础』多线程笔记「一」基本说明
基本概念:一个程序集一个进程 一个进程可以有多个线程,且属于同一个程序集 每一个线程可以视为一个执行流,每一个执行流用于执行一个特定的任务 各个线程的执行是独立的 每个程序集都要有一个主线程 线程使程序能够执行并发处理 线程共享应用程序的资源 线程处理解决了吞吐量和响应性的问题一般用途:可以使用线程处理来监视用户输入,执行后台任务,以及处理并发输入流 辅助线程经常用
2012-04-01 11:08:43
601
转载 js图片等比缩放
经常看到一些网页,其中的图片比例失调,这里提供一组方法,供需要的朋友参考。基本构思如下:1、在指定宽度和高度范围内等比例最大化缩放图片;2、按指定宽度等比最大化缩放图片;3、按指定高度等比最大化缩放图片。原方法在pvo.js文件中,为了便于交流,在这里做了修改。胡开明2011-11-23-->DOCTYPE HTML PUBLIC "-/
2012-04-01 10:37:20
459
转载 windows CMD命令大全
1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS 服务器是否能正确实现域名解析的命令行工具。 它在 Windows NT/2000/XP 中均可使用 , 但在 Windows 98 中却没有集成这一个工具。 4. explorer-------打开资源管理器
2012-04-01 10:31:19
714
转载 C# WinForm获取当前路径汇总
Winform获取应用程序的当前路径的方法集合,具体如下,值得收藏//获取当前进程的完整路径,包含文件名(进程名)。string str = this.GetType().Assembly.Location;result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)//获取新的Process 组件并将其与当前活动的进程关联的主模块的完整
2012-04-01 10:26:21
379
转载 winform 打包自动安装数据库
vs2005 打包,并自动安装SQL数据库.创建部署项目 1. 在“文件”菜单上指向“添加项目”,然后选择“新建项目”。 2. 在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。在“名称”框中键入 setup1。 3. 单击“确定”关闭对话框。 4. 项目被添加到解决方案资源管
2012-04-01 10:25:18
479
转载 ASP.NET 图片加水印防盗链
首先建一个类:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Drawing;/// ///Class1 的摘要说明/// public class Class1:IHttpHandler //调用接口{ pub
2012-04-01 10:16:50
405
转载 C#压缩解压zip 文件
下面就来解释如何在C#里用http://www.icsharpcode.net下载的SharpZipLib进行文件的压缩和解压缩。 首先需要在项目里引用SharpZipLib.dll。然后修改其中的关于压缩和解压缩的类。实现源码如下: /// /// 压缩文件 /// using System;using System.IO;using ICSharp
2012-04-01 09:53:50
2116
转载 C#线程进程总结(线程调用带参数的方法)
新建一个线程,执行一个无参无返回值的方法。/// /// 线程调用的方法,无参无返回值/// private void ThreadMethod(){ } 启动线程:using System.Threading;ThreadStart threadStart = new ThreadStart(ThreadMethod);Thread threa
2012-04-01 09:25:36
779
转载 扩展方法
扩展方法是你能够向现有类型和自定义类型添加方法,而无需创建新的派生类型或者以其他方式修改原始类型 扩展方法是一个特殊的静态方法,它定义在一个静态类中,但是可以在其他类型(我们要扩展的那个类)的对象上像调用实例方法那样调用,因此通过扩展方法可以在不修改一个类的前提下对一个类进行功能上的补充 创建扩展方法 扩展方法和一般静态方法定义类似,惟一的区别是在第一个参数的前面加上this关键
2012-03-31 14:31:44
341
转载 属性
字段 字段是存储类要满足其设计所需要的数据,字段是与类相关的变量 比如以前讲的Cat类中的private string _name;_name其实就是一个字段,它通常是类的私有变量 属性 属性是一个方法或者一对方法,但在调用它的代码来看,它是一个字段,即属性适合以字段的方式使用方法调用的场合 通常字段都是private,即私有变量,而属性是public,即公有变量,那
2012-03-31 13:28:37
270
转载 readonly关键字
readonly关键字 表示只读的意思,与const不同,readonly关键字只能用于字段,不能用于局部变量,也就是说要使用readonly修饰一个字段或者变量的时候,必须将它声明在类中或者全局变量中,它表示字段值只能在构造器中更改或者在声明时指定 声明方式 class Employee { public readonly string _name;
2012-03-31 13:25:11
780
转载 ref参数
不仅可以通过值为方法传递参数,还可以通过引用为方法传递参数,若通过引用为方法传递参数,需要使用ref关键字 如果把一个参数传递给方法,且这个方法的输入参数前带有ref关键字,那么这个方法对参数所作的任何改变都会影响原来对象的值 注意 1:通过ref传递的引用参数,在函数成员调用之前,必须已赋值,如果没有明确赋值会报错 实例 using System; using
2012-03-31 13:22:01
542
转载 out参数
out关键字与ref关键字很相似,out关键字也会导致参数通过引用来传递,与ref关键字不同,ref关键字要求变量必须在传递之前进行初始化,out关键字不要求变量在传递之前必须进行初始化,但是必须在方法中为变量赋值,如果使用out关键字,方法定义和调用方法都必须显示的使用out关键字 注意 1:如果在方法体中没有为out参数赋值,那么将无法编译 什么时候使用out参数呢?
2012-03-31 13:21:40
493
转载 析构函数
析构函数 析构函数是在类的破坏时自动执行的操作,析构函数在碎片收集时会自动调用,程序员无法控制何时调用析构函数,因为这是由垃圾回收器决定的 垃圾回收器 与运行时不进行垃圾回收的开发语言相比,C#无需太多的内存管理,这是因为.NETFramework垃圾回收器会隐式的管理对象的分配和释放,垃圾回收器检查是否存在应用程序不在使用的对象,如果垃圾回收器认为某个对象符合析构,则调用析构函
2012-03-31 13:19:54
382
转载 分布类
分布类 为了将在某种意义上讲比其他细节更重要的代码分离出来,可以将一个类的实现划分到多个C#文件中,这就是分布类,比如:有个Pesoon类的源文件叫 Pesoon.cs,有时候为了区分不同开发人员的维护范围,避免定义在同一个文件中造成互相干扰,C#通过分布类的做法,将一个类拆分为多个文件 partial class 类名称 { //类成员 } 如果使用这
2012-03-31 13:18:33
632
转载 C#里4个访问权限修饰符
C#里类及类成员的修饰符有以下五个如下:public 公开 类及类成员的修饰符 对访问成员没有级别限制private 私有 类成员的修饰符 只能在类的内部访问protected 受保护的 类成员的修饰符 只能在该类和该类的派生类中访问,不管该派生类和基类是否在同一程序集中internal 内部的 类及类成员的修饰符 访问仅限于程序集中protected internal 受保护
2012-03-31 10:21:32
1089
转载 同步调用WebService和异步调用WebService
一:同步调用 一个同步操作会阻塞整个当前的进程,直到这个操作完成才能执行下一段代码 二:异步调用 不会阻塞启动操作的调用线程,调用程序必须通过轮流检测,或者等待完成信号来发现调用的完成 三:同步调用WebService 同步调用WebService就是我们平常的调用的写法 1:AsynCall.asmx的AsynCall.cs代码 ///
2012-03-31 09:56:23
405
转载 步步为营UML建模系列总结
软件开发为什么需要UML(软件越来越复杂),开发人员仍然沿用25年前的方法来开发,这就是问题的根本所在 。--IvarJacobson 掌握软件开发的方法就能不断的复制成功。 你应该使用UML吗?一个字:是!旧的面向对象符号正在快速地消逝。它们还会残留在UML稳固前出版的书上面,但新的书、文章等等将会全部以UML作为符号。如果你正在使用旧的符号,你就应该在1998年间转换到UML。如果
2012-03-31 09:41:05
424
转载 步步为营UML建模系列七、表图(Data model diagram)
概述数据模型Profile是Enterprise Architect的UML扩展来支持关系数据库建模。它包括一些定制扩展,如:表,数据库图表,表键,触发器和约束。它是一种在UML中对关系数据库建模的技术。数据建模不仅可以对象的属性建模(比如E-R图),也可以对数据的行为建模(比如触发器Trigger、存储过程Stored Procedure).在进行数据库设计时,设计到如下几个概念:模
2012-03-31 09:40:33
608
转载 步步为营UML建模系列六、类图(Class diagram)
概述类图(Class Diagram)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。类图是定义其他图的基础,在类图基础上,可以使用状态图、协作图、组件图和配置图等进一步描述系统其他方面的特性。类图包括7个元素:类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization
2012-03-31 09:40:07
412
转载 步步为营UML建模系列五、时序图(Squence diagram)
概述顺序图是一种详细表示对象之间以及对象与参与者实例之间交互的图,它由一组协作的对象(或参与者实例)以及它们之间可发送的消息组成,它强调消息之间的顺序。顺序图是一种详细表示对象之间以及对象与系统外部的参与者之间动态联系的图形文档。它详细而直观地表现了一组相互协作的对象在执行一个(或少量几个)用况时的行为依赖关系,以及操作和消息的时序关系。类图对对象之间的消息(交互情况)表达不够详细;详细说
2012-03-31 09:39:33
948
转载 步步为营UML建模系列四、状态图(State)
概述状态图(Statechart Diagram)主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Action)。一般可以用状态机对一个对象的生命周期建模,状态图用于显示状态机(State Machine Diagram),重点在与描述状态图的控制流。 状态图元素(State Diagram El
2012-03-31 09:39:04
898
转载 步步为营UML建模系列三、用例图(Use Case)
概述用例试图描概括了用例中角色和系统之间的关系,描述了系统功能需求,角色和系统的交互以及系统的反应。官方定义:用例定义了一组用例示例,其中每个示例都是系统所执行的一系列操作,这些操作生成特定主角可以观测的值.简单的说法:一个用例就是与参与者交互的,并且给参与者提供可观测的意义的结果的一系列活动的集合,所谓的用例就是一件事情,要完成这件事情,需要做的一系列的活动;而做一件事情可以有很多不
2012-03-31 09:38:25
525
转载 步步为营UML建模系列二、部署图(Deployment Diagram)
概述部署图(deployment diagram,配置图)是用来显示系统中软件和硬件的物理架构。从部署图中,您可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况。使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件元素的配置和部署方式。 一个UML部署图(对象管理组织2001)描述了一个运行时的硬件结点,以及在这些结点上运行的软件组件的静态视图。
2012-03-31 09:37:19
597
转载 步步为营UML建模系列一(为什么要建模)
概述如果想搭一个狗窝,备好木料、钉子和一些基本工具(如锤子、锯和卷尺)之后,就可以开始工作了。从制定一点初步计划到完成一个满足适当功能的狗窝,可能不用别人帮助,在几个小时内就能够实现。只要狗窝够大且不太漏水,狗就可以安居。如果未能达到希望的效果,返工总是可以的,无非是让狗受点委屈。如果想为家庭建造一所房子,备好木料、钉子和一些基本工具之后,也能开始工作,但这将需要较长的时间,并且家庭对
2012-03-31 09:36:05
690
转载 C#中ToString格式化
Int.ToString(format):格式字符串采用以下形式:Axx,其中 A 为格式说明符,指定格式化类型,xx 为精度说明符,控制格式化输出的有效位数或小数位数,具体如下:格式说明符说明示例输出C货币2.5.ToString("C")¥2.50D十进制数25.ToString("D5")00025
2012-03-29 13:39:16
1819
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人