-1

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

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

谢谢!

// 尼克

4

1 回答 1

0

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

if (!pictureExists)
{
    lock (_syncRoot) // This is the shared object to lock by
    {
        if (!pictureExists) // double checked
        {
            // create it
        }
    }
}
于 2013-05-20T17:51:15.213 回答