c# - 一次只允许执行一次方法
问题描述
我认为这是相当简单的任务,但我真的找不到好的答案。我有一个类/方法,可以从不同的服务器下载文件,处理它们,并对数据库进行更改。问题是,它可以由管理员手动启动,我想防止这个进程的多个实例同时运行。有什么简单的方法可以实现吗?
解决方案
Mutex
并且Distributed Lock
是您正在寻找的东西。
互斥体是一个互斥标志。它充当一段代码的看门人,允许一个线程进入并阻止对所有其他线程的访问。这确保了被控制的代码一次只会被一个线程命中。完成后一定要释放互斥锁。:)
参考:什么是互斥锁?
您应该Mutex
在具有多个应用程序实例的服务器中使用。DistributedLock
当你有不止一台服务器时,你应该使用它。
对于 C# 和 Redis 分布式锁检查Redlock
。
https://redis.io/topics/distlock
推荐阅读
- postgresql - Goldengate 19 Postgres 到 AWS
- django - 如何向 Django DeleteView POST 请求添加其他数据?
- typo3 - TYPO3 制作 TSconfig 所需的后端字段?
- sql - 如何根据 SQL Teradata 中表 1 中的列中的值从表 2 中选择行?
- python - 谷歌 Colab 抛出 typeError 即使它不应该
- business-objects - 迁移业务对象 IES 10901
- python - 在循环中以 1kHz 发出命令时计算机和函数发生器之间的连接丢失
- sql - 如何在 SQL 中将小时、分钟和秒 (HH:mm:ss) 转换为分钟和秒 (mm:ss)
- scala - 如何运行 scopt scala 应用程序
- r - 在更大的表中合并一些列