我正在编写一个多线程应用程序。这是我的情况。
我从数据库中抓取一千条记录。将其分成 5 块列表对象。并创建 5 个线程来处理它们。我每分钟都做同样的事情,直到我有记录留在数据库中
Task.Factory.StartNew(() => ProcessRecords(listRecords))
在 ProcessRecords 方法中,有一个小的数据库更新和一些发送邮件。(我将 System.Net.Mail 用于电子邮件,不使用任何 ORM 进行数据库操作。)
现在我担心由于一些未知问题,线程可能无法完成。在那种情况下会发生什么?假设一个进程(甚至更多)一直在等待数据库中的死锁或其他什么,我的应用程序会发生什么。它将继续添加具有新记录集的新线程,而一些永无止境的线程。在这种情况下如何实现超时?
我想运行这个过程,如果它无法完成,则在 5 分钟内终止它。