- 博客(21)
- 资源 (4)
- 收藏
- 关注
转载 C#多线程学习(六) 互斥对象
如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类。我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上车。而线程与Mutex对象的关系也正是如此,线程使用Mutex.WaitOne()方法等待Mutex对象被释放,如果它
2012-04-17 15:19:11 691
转载 电脑辐射
电脑辐射----每天用电脑4-6小时的人必看中午睡觉时要记得关计算机你是否常觉得头重重的或记忆力衰退呢?趴着睡觉的时候要记的把计算机关机,不只是把屏幕关掉而已,因为只把屏幕关掉是无法杜绝辐射线的,而且我们都是趴着睡,头直接对着计算机,哪天得了老人痴呆症或脑瘤就来不及了!辐射线真的很可怕的!!小心啊~健康重于一切!计算机族的杀手---胸廓出口症常坐在计算机桌前的你,是否一坐就是好几个
2012-04-17 15:18:46 1317
转载 C#多线程学习(五) 多线程的自动管理(定时器)
Timer类:设置一个定时器,定时执行用户指定的函数。定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。初始化一个Timer对象: Timer timer = new Timer(timerDelegate, s,1000, 1000); // 第一个参数:指定了TimerCallback 委托,表示要执行的方法;// 第二个参数:一个包含回调方法要使用的信息的对象
2012-04-01 11:23:29 302
转载 C#多线程学习(四) 多线程的自动管理(线程池)
在多线程的程序中,经常会出现两种情况:一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应这一般使用ThreadPool(线程池)来解决;另一种情况:线程平时都处于休眠状态,只是周期性地被唤醒这一般使用Timer(定时器)来解决;ThreadPool类提供一个由系统维护的线程池(可以看作一个线程的容器),该容器需要 Windows 200
2012-04-01 11:22:51 332
转载 C#多线程学习(三) 生产者和消费者
前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。在C#中,关键字lock定义如下:
2012-04-01 11:21:01 325
转载 C#多线程学习(二) 如何操纵一个线程
下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可。(线程入口使程序知道该让这个线程干什么事)在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就开始执行ThreadStart所代表或者说指向的函数。打开你的VS.
2012-04-01 11:18:24 289
转载 C#多线程学习(一) 多线程的相关概念
什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。什么是多线程?多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务
2012-04-01 11:18:05 261
转载 浅谈线程池(下):相关试验及注意事项
线程池是.NET中的重要组件,几乎所有的异步功能依赖于线程池。之前我们讨论了线程池的作用、独立线程池的存在意义,以及对CLR线程池和IO线程池进行了一定说明。不过这些说明可能有些“抽象”,于是我们还是要通过试验来“验证”这些说明。此外,我认为针对某个“猜想”来设计一些试验进行验证是非常重要的能力,如果您这方面的能力略有不足的话,还是尽量加以锻炼并提高吧。CLR线程的使用与创建首先,我们准备
2012-04-01 11:17:07 428
转载 浅谈线程池(中):独立线程池的作用及IO线程池
我们简单讨论了线程池的作用,以及CLR线程池的一些特性。不过关于线程池的基本概念还没有结束,这次我们再来补充一些必要的信息,有助于我们在程序中选择合适的使用方式。独立线程池上次我们讨论到,在一个.NET应用程序中会有一个CLR线程池,可以使用ThreadPool类中的静态方法来使用这个线程池。我们只要使用QueueUserWorkItem方法向线程池中添加任务,线程池就会负责在合适的时候执
2012-04-01 11:15:39 323
转载 浅谈线程池(上):线程池的作用及CLR线程池
线程池是一个重要的概念。不过我发现,关于这个话题的讨论似乎还缺少了点什么。作为资料的补充,以及今后文章所需要的引用,我在这里再完整而又简单地谈一下有关线程池,还有.NET中各种线程池的基础。更详细的内容就不多作展开了,有机会我们再详细讨论这方面的细节。这次,还是一个“概述”性质的,希望可以说明白这方面问题的一些概念。线程池的作用其实“线程池”就是用来存放“线程”的对象池。在程序中,如果
2012-04-01 11:14:57 267
转载 『C#基础』多线程笔记「四」线程池
现在到了关于多线最简单使用的最后一篇笔记。无论从什么角度来看,每一项事物都应该有其所在的空间,而对于线程来说,线程池就是它所存在的空间,或者叫容器了。 接下来,看看这个线程池是如何使用的吧!概念:ManualResetEvent,通知一个或多个正在等待的线程已发生事件 ManualResetEvent.Set(),将事件状态设置为终止状态,允许一个或多个等待线程继续 Thr
2012-04-01 11:13:10 312
转载 『C#基础』多线程笔记「三」计时器
在多线程中,有一个比较特殊的应用,就是计时器(Timer)。我在之前的一篇笔记中说过关于Timer控件的简单用法,这里我再根据一些新找的的内容,进行一些整理与扩展。「『WPF』Timer的使用」命名空间:System.Timers.TimerSystem.Threading.TimerSystem.Windows.Forms.TimerSystem.Web.UI.Tim
2012-04-01 11:12:20 391
转载 『C#基础』多线程笔记「二」线程同步
文章结构:锁定 监视器 共享资源的同步访问 同步事件和等待句柄 多线程使用准则「MSDN」 锁定无论是程序还是数据库,只要是涉及到并发的问题,都难免会有「锁」的概念。在C#中,使用lock关键字来对某个对象实施加锁的操作。lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。lock调用 publ
2012-04-01 11:11:45 466
转载 『C#基础』多线程笔记「一」基本说明
基本概念:一个程序集一个进程 一个进程可以有多个线程,且属于同一个程序集 每一个线程可以视为一个执行流,每一个执行流用于执行一个特定的任务 各个线程的执行是独立的 每个程序集都要有一个主线程 线程使程序能够执行并发处理 线程共享应用程序的资源 线程处理解决了吞吐量和响应性的问题一般用途:可以使用线程处理来监视用户输入,执行后台任务,以及处理并发输入流 辅助线程经常用
2012-04-01 11:08:43 566
转载 js图片等比缩放
经常看到一些网页,其中的图片比例失调,这里提供一组方法,供需要的朋友参考。基本构思如下:1、在指定宽度和高度范围内等比例最大化缩放图片;2、按指定宽度等比最大化缩放图片;3、按指定高度等比最大化缩放图片。原方法在pvo.js文件中,为了便于交流,在这里做了修改。胡开明2011-11-23-->DOCTYPE HTML PUBLIC "-/
2012-04-01 10:37:20 443
转载 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 666
转载 C# WinForm获取当前路径汇总
Winform获取应用程序的当前路径的方法集合,具体如下,值得收藏//获取当前进程的完整路径,包含文件名(进程名)。string str = this.GetType().Assembly.Location;result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)//获取新的Process 组件并将其与当前活动的进程关联的主模块的完整
2012-04-01 10:26:21 363
转载 winform 打包自动安装数据库
vs2005 打包,并自动安装SQL数据库.创建部署项目 1. 在“文件”菜单上指向“添加项目”,然后选择“新建项目”。 2. 在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。在“名称”框中键入 setup1。 3. 单击“确定”关闭对话框。 4. 项目被添加到解决方案资源管
2012-04-01 10:25:18 453
转载 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 386
转载 C#压缩解压zip 文件
下面就来解释如何在C#里用http://www.icsharpcode.net下载的SharpZipLib进行文件的压缩和解压缩。 首先需要在项目里引用SharpZipLib.dll。然后修改其中的关于压缩和解压缩的类。实现源码如下: /// /// 压缩文件 /// using System;using System.IO;using ICSharp
2012-04-01 09:53:50 2051
转载 C#线程进程总结(线程调用带参数的方法)
新建一个线程,执行一个无参无返回值的方法。/// /// 线程调用的方法,无参无返回值/// private void ThreadMethod(){ } 启动线程:using System.Threading;ThreadStart threadStart = new ThreadStart(ThreadMethod);Thread threa
2012-04-01 09:25:36 750
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人