ManualResetEvent的Reset问题? 请教大家!
其中的Set明白,WaitOne明白,但是这个Reset就不明白了
过来请教大家拉
其中的Set明白,WaitOne明白,但是这个Reset就不明白了
过来请教大家拉
解决方案 »
- 输出excel页面自动关闭,无提示“打开”“保存”“取消”对话框
- C# 怎么让winform程序中的输入文本框保留上次的输入
- 求助!~
- 如何实现Web页面在进行耗时运算时,弹出一个进度页面(页面显示文字或动画GIF就OK),运算完成后自动关闭进度页面。
- 用asp.net如何实现IIS虚拟目录下所有文件的下载
- 1000分求客户关系管理系统源码和文档(限C#),声明,绝非拿来获取不正当利益,将在非技术区另开贴结帐,有意者请进,无意者勿扰
- 最近学着编制一个单机考试系统,不知道这个界面中"答题信息"的方块怎么做出来!?求教大神!
- 新人求助,如何获取devexpress pictureEdit的图片类型?
- 请问在ADO。NET中怎么在设置存储过程中的输入和得到输出参数?
- 请教高手:怎样可以在对某个表进行操作的时候可以将表锁住,还有是怎样可以将某个或某几个记录锁住,让其它用户不可操作
- 救命!救命!老弟给你们跪下了!
- 多线程不能调用带参数的方法。怎么解决呀。救命呀大哥大姐门!
据我自己理解:
WaitOne()是等待一个信号,同时阻止当前线程,当某个线程执行Set命令的时候,WaitOne接收这个信号,继续执行。
当时这个ReSet就不是很理解了,Set是“将事件状态设置为终止状态,允许一个或多个等待线程继续。 ”,而ReSet是“将事件状态设置为非终止状态,导致线程阻止。 ”
何谓“非终止状态”??“导致阻止线程”中的这个“线程”具体是那个线程?当前线程还是调用waitone的线程呢???
using System.Threading;namespace ManualReset
{ class Reset
{ [STAThread]
static void Main()
{
ManualResetEvent manRE;
manRE = new ManualResetEvent(true); // 赋给信号量
bool state = manRE.WaitOne(1000, true);
Console.WriteLine("ManualResetEvent After first waitone " + state); manRE.Reset(); //设置ManualResetEvent状态为无信号量
state = manRE.WaitOne(5000, true);
Console.WriteLine("ManualResetEvent After second waitone " + state); Console.Read();
}
}
}
using System;
using System.Threading;
namespace ManualSet
{ class Set
{ [STAThread]
static void Main(string[] args)
{
ManualResetEvent manRE;
manRE = new ManualResetEvent(false);
Console.WriteLine("Before waitone");
bool state = manRE.WaitOne(5000, true);
Console.WriteLine("ManualResetEvent After first waitone " + state); manRE.Set(); //将其状态设为有信号量
Thread.Sleep(3000);
state = manRE.WaitOne(5000, true);
Console.WriteLine("ManualResetEvent After second waitone " + state);
Console.Read();
}
}
}