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

时间:2012-02-07 12:28:23

标签: c# dll thread-safety console-application

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

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

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

另一种选择是多次部署应用程序,但我宁愿不必管理重复的文件夹。我现在也避免使用线程,但这将是未来进一步开发的一种选择。

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

1 个答案:

答案 0 :(得分:2)

不,如您所述,将相同的DLL文件加载到多个进程中没有问题。如果进程需要对共享资源(如文件)的独占访问权限,则只会遇到运行同一应用程序的多个实例的问题。关于写入数据库,只要您设计应用程序以便多个客户端可以在不覆盖数据的情况下编写数据或者导致某些与数据的域完整性不一致的情况,那么就没问题了。

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