我目前有一个应用程序,它基本上是 ~10 "LongRunning"Task
的包装器。每个线程都应该无限期地运行,但有时它们会锁定或崩溃,有时包装器应用程序会自发退出(我还没有能够追踪到它)。此外,包装应用程序当前只能为一个用户运行,并且该用户必须是重新启动线程或重新启动整个应用程序的用户。
我目前有一个监视器实用程序,可以让我知道线程何时停止工作,以便可以手动重新启动它们,但我想自动重新启动它们。我还希望每个人都可以使用包装器来检查线程的状态,并且即使没有包装器,线程也可以运行。
基于这些目标,我想我想将线程分离成一个 Windows 服务,并将包装器转换为可以连接到服务以检查其状态并对其进行操作的东西。
我该怎么做呢?这是一个合理的架构吗?我应该把每个线程变成一个单独的服务,还是应该有一个多线程服务?
编辑:所有任务都记录到同一组输出文件(通过 a TextWriter.Synchronized(StreamWriter)
),我想保持这种行为。
他们目前也都共享相同的数据库连接,这意味着我需要让他们都同意在必要时同时关闭连接。但是,如果将它们分开,则它们可以各自使用自己的数据库连接,而我无需担心同步。我实际上怀疑这一步是当前的失败点之一,因此将其拆分是一件好事。