【发布时间】:2012-11-05 10:42:53
【问题描述】:
我将以下代码用于网页的关键部分
if(Monitor.TryEnter(lockObj,60000))
{
try{
//write some things to a file
}
finally
{
Monitor.Exit(lockObj);
}
}
这里,lockObj 是类的静态成员。我的问题是,如果用户在执行关键部分时关闭网页或浏览器会发生什么? lockObj 是否对未来的页面请求保持锁定状态?
【问题讨论】:
-
页面在做什么?一个GET?一个帖子?上传文件?
-
在临界区,它正在写入服务器上的日志文件
-
是的,但是用户在做什么?只是发出页面请求?是否有任何东西被发送回给用户?我看不到您的服务器甚至会如何知道用户是否关闭了页面,就它所关心的而言,它只会发送它本来要发送的响应。
-
为什么不使用
lock() { ... }?和你自己写的一样 -
如果这很重要,我假设微软会实现 IDisposable 接口,以便您可以使用 using 关键字。
标签: c# asp.net synchronization try-finally