防止代码同时执行(创建调整大小的图像)

时间:2013-05-20 17:47:44

标签: c# asp.net locking image-resizing

我正在开发一个httpHandler来为我的web应用程序提供调整大小的图像。如果请求的图像和指定的sixe不存在,我将创建该图像。

问题是两个(或多个)请求是否同时到达服务器并要求创建必须创建的映像。我怎样才能防止这种情况发生?如何在第一次创建图像请求的时间内锁定代码?创建映像时,第二个(和后续)请求将从文件系统获取创建的映像。

感谢名单!

// Nicke

1 个答案:

答案 0 :(得分:0)

只需使用C#简单锁定机制即可。创建一个共享给所有线程的静态对象(可能使用单例来包装此操作)并使用double checked锁定:

if (!pictureExists)
{
    lock (_syncRoot) // This is the shared object to lock by
    {
        if (!pictureExists) // double checked
        {
            // create it
        }
    }
}