首页 > 解决方案 > 一次只允许执行一次方法

问题描述

我认为这是相当简单的任务,但我真的找不到好的答案。我有一个类/方法,可以从不同的服务器下载文件,处理它们,并对数据库进行更改。问题是,它可以由管理员手动启动,我想防止这个进程的多个实例同时运行。有什么简单的方法可以实现吗?

标签: c#asp.net-core

解决方案


Mutex并且Distributed Lock是您正在寻找的东西。

互斥体是一个互斥标志。它充当一段代码的看门人,允许一个线程进入并阻止对所有其他线程的访问。这确保了被控制的代码一次只会被一个线程命中。完成后一定要释放互斥锁。:)

参考:什么是互斥锁?

您应该Mutex在具有多个应用程序实例的服务器中使用。DistributedLock当你有不止一台服务器时,你应该使用它。

对于 C# 和 Redis 分布式锁检查Redlockhttps://redis.io/topics/distlock


推荐阅读