int test = 0;
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 10000; ++i)
{
Monitor.Enter(test);
try
{
test = i;
}
finally
{
Monitor.Exit(test);
}
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
这段代码进行到finally里会抛出异常,而如果用lock代替Monitor来锁的话却不会有异常出现,这是什么原因呢?
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 10000; ++i)
{
Monitor.Enter(test);
try
{
test = i;
}
finally
{
Monitor.Exit(test);
}
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
这段代码进行到finally里会抛出异常,而如果用lock代替Monitor来锁的话却不会有异常出现,这是什么原因呢?
解决方案 »
- 柱形图
- VS2010中有没有能自动给一个文件里的所有函数都下一个断点的功能?
- SqlException (0x80131904): 第 1 行: '(' 附近有语法错误
- 【求助】vs2008中写的windows service程序定时发送邮件功能
- Listview 与图片的问题
- C#套接字怎样把服务端读取数据库的数据发送到客户端,它以什么形式发送呢
- TreeView问题,是高手的都来看看!
- 对于一个03界毕业生如何在最短时间上手C#??
- 如何得到access数据库中的所有表?
- 在窗体上画线[简单]
- 用GDI+如何设计一款荧光笔
- c#用正则表达式限制textbox窗体控件只能输入数字和小数点 怎么作
进入
IL_0005: nop
IL_0006: ldc.i4.s 100
IL_0008: call void [mscorlib]System.Threading.Thread::Sleep(int32)
IL_000d: nop
IL_000e: nop
IL_000f: ldarg.0
IL_0010: ldfld object WindowsApplication1.Form1::t
IL_0015: dup
IL_0016: stloc.1
IL_0017: call void [mscorlib]System.Threading.Monitor::Enter(object)
IL_001c: nop
退出
IL_0046: nop
IL_0047: leave.s IL_0051
IL_0049: ldloc.1
IL_004a: call void [mscorlib]System.Threading.Monitor::Exit(object)
IL_004f: nop
IL_0050: endfinally
IL_0051: nop