2

我有 asp.net 页面/处理程序来访问图像。当对图像执行第一次请求时,我将图像调整为标准尺寸(保存在磁盘上)并返回它。所以我需要锁定对图像的所有请求,除了一个。这将调整图像大小。由 URL 中的 ID 标识的图像,所以我猜每个图像需要一个锁对象(URL 中的 ID)。我的问题是如何组织这个锁模型?

我的想法是像这样 Application.Add(Request[Id], new object()); 并用它来锁定竞争线程。

此任务类似于 DB 的行锁定或集合中的锁定元素。

感谢您的重播。

4

1 回答 1

1

最简单的方法是锁定图像文件。


using (FileStream fs = new FileStream("image.file", FileMode.Create, FileAccess.Write, FileShare.None))
{

resize image here 

}

当第二个(第三个等)线程尝试创建文件时,将抛出异常“进程无法访问文件......”。我在代码中处理这个异常。

于 2009-11-06T12:40:23.410 回答