gpt4 book ai didi

c# - 现有文件部分的锁定检查

转载 作者:行者123 更新时间:2023-11-30 21:05:09 25 4
gpt4 key购买 nike

在我的网站中,我使用 Controller 生成图像缩略图。我的代码看起来像:

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();
}

最佳答案

将缩略图的创建委托(delegate)给其他服务。用户将产生创建缩略图的请求。另一项服务将消费此请求并执行实际工作。

什么是服务,你可以自己选择。它可以是 WCF 服务、Windows 服务、消息队列或其他东西。

直接在 ASP.NET 网站中使用锁定通常不是一个好主意,因为它会引入瓶颈。

关于c# - 现有文件部分的锁定检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11870718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com