C# 多个控制台应用程序运行和隔离

标签 c# dll thread-safety console-application

如果我部署 C# 控制台应用程序,它将执行以下操作:

  • 读取消息(ActiveMQ)
  • 处理消息内容
  • 将结果写入数据库 (SQL Server)

多次运行是否会出现任何问题,例如如果我创建一个批处理文件并运行 100 个实例怎么办?如果每个实例都使用相同的共享 DLL,例如,是否会存在任何冲突? Apache.NMS.ActiveMQ。

另一个选择是多次部署应用程序,但我不想管理重复的文件夹。目前我也在避免使用线程,但这将是 future 进一步开发的一个选项。

只是想澄清这些 DLL 发生了什么,并检查是否存在线程类型冲突,例如一个实例将另一个实例的处理结果写入数据库...

最佳答案

不,正如您所描述的,将相同的 DLL 文件加载到多个进程中不会有问题。仅当进程需要独占访问共享资源(如文件)时,运行同一应用程序的多个实例时才会遇到问题。关于写入数据库,只要您设计应用程序,以便多个客户端可以写入数据,而不会覆盖数据或导致与数据的域完整性出现某种不一致,那么就没有问题。

但是,如果您需要并发性,我强烈建议您考虑使应用程序成为多线程,或者如果您需要隔离,则考虑使应用程序域成为多线程。就资源而言,运行多个进程比这两个选项中的任何一个都要昂贵得多。

关于C# 多个控制台应用程序运行和隔离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9176273/

相关文章:

c# - .NET Core 3.1 - 无法加载文件或程序集 System.Runtime,版本 = 4.2.2.0

c++ - 从 C++ 集成 R 代码

c# - MemoryCache Contains() 线程安全

c++ - 在多线程环境中同步共享内存

c# - 获得最深或元素

c# - 如何从 mvc 5 中的操作方法获取 View 名称?

c# - .net 中有光纤 api 吗?

在Windows中将C项目编译为DLL文件

visual-studio - .exe给出错误Win7x64缺少MSVCP120.dll

ios - 直接访问member和通过self.name访问在线程安全策略上有什么区别吗?