如果应用程序意外关闭,如何防止队列项目丢失?

How to prevent queue items lost if application will shutdown unexpectedly?

我在我的应用程序中实现了带有专用线程的队列。

我担心将项目排在队列中。 如果由于某种原因这个应用程序会在新项目添加到队列中时意外关闭怎么办? 据我了解,专用线程不能保证在应用程序关闭后正常工作。该进程可能已关闭。

所以我应该在每次入队时将项目保存到文件中,然后在处理完项目后将其删除吗?或者最好使用一些分离的应用程序或自托管任务?

编辑: 它是使用 System.Collections.Generic.Queue

的 WinForms 应用程序

通常要保持您的队列持久 - 您必须使用某种存储。将数据保存在内存中并不能防止数据丢失。

保持可靠性的最简单方法 - 使用一些内置的云解决方案,如 Azure Service Bus/ Azure Queue Storage, Amazon SQS

如果您自己构建系统 - 您可以使用数据库甚至文件存储。