2009-11-06 29 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 

} 
 

當第二(第三等)線程嘗試創建文件例外「該進程無法訪問該文件...」會拋出。我在代碼中處理這個異常。