ms-help://MS.NETFrameworkSDK.CHS/csspec/html/vclrfcsharpspec_8_12.htm
下列形式的 lock 语句lock (x) ...
(其中 x 是引用类型的表达式)完全等效于System.Threading.Monitor.Enter(x);
try {
...
}
finally {
System.Threading.Monitor.Exit(x);
}
不同的是 x 只被计算一次。
按照上面的说法,异常以后应该释放临界区了
下列形式的 lock 语句lock (x) ...
(其中 x 是引用类型的表达式)完全等效于System.Threading.Monitor.Enter(x);
try {
...
}
finally {
System.Threading.Monitor.Exit(x);
}
不同的是 x 只被计算一次。
按照上面的说法,异常以后应该释放临界区了
解决方案 »
- 急急!!! 各路大神都来看一下! 在winform中怎样读取xml文件并以动态的形式绑定treeview并生成树 最好是根据获取的字段来生成树
- 求助,CellValueChanged事件
- 如何判断datagridview 单元格内是否有小数
- 怎么获得其他窗体下的某个控件的句柄
- 求高手教我怎么在winform里实现滑动星星评分啊!!
- 如何重新计算窗体的非客户区大小?
- "跪求.......,跪求......."请问提问者:跪是什么意思啊???!!!你是CSDN的一员吗?你把CSDN看成什么呢?CSDN究竟是什么?
- 线程,函数,委托之间
- c#2005 +access 开发程序过程发现这样一个问题,这个SQL语句为什么不能执行
- 怎么做鼠标连击
- [菜鸟问题]在windows应用程序中大家怎么对数据库进行添加啊
- 为什么我编译的时候,bin目录下只有一个dll文件,要有多个dll文件怎么做。
using System.Threading;
public class Test
{
public void M1()
{
Run("M1");
}
public void M2()
{
Run("M2");
}
private int i = 0;
private int t = 0;
public void Run(string name)
{
lock(this)
{
for (i = t; i <100; i++)
{
t = i;
Thread.Sleep(100);
if (i == 50)
{
t++;
throw new Exception(name);
}
Console.WriteLine(name + " " + i.ToString());
}
}
}
}
public class EntryPoint
{
public static void Main()
{
Test t = new Test();
Thread t1 = new Thread(new ThreadStart(t.M1));
Thread t2 = new Thread(new ThreadStart(t.M2));
t2.Start();
t1.Start();
}
}
{
//lock
}
catch(Exception ee)
{}
finally
{
//unlock
}
这样不得了吗?