gpt4 book ai didi

c# - BlockingCollection 在 10 秒内不会重试

转载 作者:行者123 更新时间:2023-12-01 19:46:27 25 4
gpt4 key购买 nike

我使用 Blockingcollection 作为 FIFO 队列,但我对文件进行了大量操作,消费者可能很容易遇到一个文件锁,所以我所做的是创建一个简单的 try catch,消费者重新排队本身,但是在一个长的 FIFO 队列 中,队列中有很多其他项目,这足以暂停,但在空的或非常短的 FIFO 队列 中,这意味着消费者 不断地重复重复发生自身事件,而这些事件可能仍会被文件锁定。

消费者忙碌 -> 重新排队 -> 消费者忙碌 -> 重新排队(无限)

有没有办法让 BlockingCollection 在新消费者创建时间少于 10 秒时不尝试运行它?即,可能会在队列中获取净值并继续,并且仅在创建日期时间为空(第一次尝试的默认值)或大于 10 秒时才获取下一个消费者?

最佳答案

没有内置的东西可以帮助解决这个问题。将最后一次尝试时的DateTime 与每个工作项一起存储(如果这是第一次尝试,则可能为null)。然后,在处理函数中等待 TimeSpan.FromSeconds(10) - (DateTime.UtcNow - lastAttemptDateTime) 秒,然后再进行下一次尝试。

考虑切换到优先级队列,该队列按照最早的下一次尝试日期时间的顺序存储项目。

关于c# - BlockingCollection 在 10 秒内不会重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30303038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com