2009-11-06 63 views
2

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

我的想法在应用程序中添加锁定对象(应用程序已同步) 像这样Application.Add(Request [Id],new object()); 并用它来锁定竞争线程。

此任务喜欢集合中DB或锁定元素的行锁定。

感谢您的回复。

回答

1

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

 

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

resize image here 

} 
 

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