Mutex 类
一个同步基元,也可用于进程间同步。命名空间: System.Threading
程序集: mscorlib(在 mscorlib.dll 中)WaitOne();
阻止当前线程,直到当前 WaitHandle 收到信号。返回值
类型:System..::.Boolean如果当前实例收到信号,则为 true。如果当前实例永远收不到信号,则 WaitOne 永不返回。下面的代码示例说明在进程等待后台线程执行完时,如何使用等待句柄阻止进程终止。using System;
using System.Threading;class WaitOne
{
static AutoResetEvent autoEvent = new AutoResetEvent(false); static void Main()
{
Console.WriteLine("Main starting."); ThreadPool.QueueUserWorkItem(
new WaitCallback(WorkMethod), autoEvent); // Wait for work method to signal.
autoEvent.WaitOne();
Console.WriteLine("Work method signaled.\nMain ending.");
} static void WorkMethod(object stateInfo)
{
Console.WriteLine("Work starting."); // Simulate time spent working.
Thread.Sleep(new Random().Next(100, 2000)); // Signal that work is finished.
Console.WriteLine("Work ending.");
((AutoResetEvent)stateInfo).Set();
}
}
一个同步基元,也可用于进程间同步。命名空间: System.Threading
程序集: mscorlib(在 mscorlib.dll 中)WaitOne();
阻止当前线程,直到当前 WaitHandle 收到信号。返回值
类型:System..::.Boolean如果当前实例收到信号,则为 true。如果当前实例永远收不到信号,则 WaitOne 永不返回。下面的代码示例说明在进程等待后台线程执行完时,如何使用等待句柄阻止进程终止。using System;
using System.Threading;class WaitOne
{
static AutoResetEvent autoEvent = new AutoResetEvent(false); static void Main()
{
Console.WriteLine("Main starting."); ThreadPool.QueueUserWorkItem(
new WaitCallback(WorkMethod), autoEvent); // Wait for work method to signal.
autoEvent.WaitOne();
Console.WriteLine("Work method signaled.\nMain ending.");
} static void WorkMethod(object stateInfo)
{
Console.WriteLine("Work starting."); // Simulate time spent working.
Thread.Sleep(new Random().Next(100, 2000)); // Signal that work is finished.
Console.WriteLine("Work ending.");
((AutoResetEvent)stateInfo).Set();
}
}
解决方案 »
- 【那个好心人帮我看看啊?】使用XmlReader类读取XML文件????
- WPF中关于Label的Target属性问题
- 求一个backgroundwork的操作事例
- ??请问如何写代码实现如下界面的 [房态表] 应如何写程序啊??
- C#取出 上传图片中任意部分 保存到数据库的问题(附代码)
- 急问如何将一个图片缩小尺寸?
- 图片合并
- 如何让Webbrowser控件可以直接输入文本?
- 初学者:安装问题求救,我都装了一上午了还是不行,救救我吧!
- 装了Vs.net beat1后,我的office 2000变了限次版了,兄弟们救救我吧!!!
- 修改一段正规表达式,请帮助
- C# RichTextBox 中加入的项目符号是不是图片?
线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU
你可以思考下迅雷什么的下载工具,都是多线程下载的,线程多,下载会快。但太多了,反而会慢。多线程主要是提高CPU的利用率,但如果利用已经很高了,你再开很多,结果资源不够,那就周转不开,会变慢的。