c# - SSIS 跨进程通信有哪些选项?

标签 c# .net multithreading ssis cross-process

我想存储一个整数变量,它会递增和递减(一个用于限制对外部 API 的并发请求的计数信号量)。这很容易,除非我需要一种方法来从在并行 SQL 代理作业中运行的 SSIS 包中读取/写入此变量。现在可以有 0 到 5 个 SQL 代理作业实例,因此可以同时运行 SSIS 包。

读取和写入此变量的选项有哪些?将使用此变量的代码在 .NET 中编写为自定义 SSIS 任务。

该值是否完全正确并不是特别重要,只要它大致接近我在容忍范围内即可。准确会很好,但不是必需的。

我可以访问整个文件系统、注册表、数据库、服务器和 SSIS 代理,但我想通过 15-30 个线程经常检查这个变量,这在历史上导致了使用文件的问题系统方法(我可能做错了),并且 IMO 过于密集而无法存储在数据库中。如我错了请纠正我。存储在注册表中可防止跨服务器场访问变量。

如果有人能帮上忙,我很乐意做你的契约仆人。

最佳答案

如果用作计数信号量,为什么不实际使用 Windows 信号量对象呢? System.Threading.Semaphore 是它的 .NET 版本,如果您在构造函数中指定信号量名称 - Win32 对象将在使用该名称的所有进程之间共享。

关于c# - SSIS 跨进程通信有哪些选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5183567/

相关文章:

c# - Moq 链接表达式导致参数计数不匹配

c# - 许多等待异步方法,还是单个等待包装 Task.Run?

c# - .NET 的多线程库

java - Quartz+Hibernate : simple util eats memory. 有什么问题吗?

C#.NET & 外部组件的翻译

c# - 按位或组合

.net - 为什么非 UI 线程能够修改 WinForm 和 TPL 中的 UI 控件?

c# - 如何从 ASP.NET 调用具有多个输入值的 MySQL 存储过程

c# - System.Activator.CreateInstance 的问题

java - 如果应用于两个线程之间共享的 bean,@Autowired 不起作用