在我的网站中,我使用控制器生成图像缩略图。我的代码看起来像:
var filePath = getThumbnailPath();
if (!File.Exists(filePath)
{
... create thumbnail
}
return new Filestream(...)
问题是,如果两个用户请求相同的缩略图并且如果没有创建它,我将在创建它时遇到异常。如何在不引入太多开销的情况下有效地使用文件名对象上的锁?
Aristos 评论后重构代码:
Mutex m = new Mutex(false, originalImagePath);
m.WaitOne();
try
{
if (!File.Exists(originalImagePath))
{
... create thumbnail
}
}
finally
{
m.ReleaseMutex();
}