【问题标题】:Ensuring if ConcurrentQueue enqueues an object or not确保 ConcurrentQueue 是否将对象入队
【发布时间】:2013-05-30 10:01:57
【问题描述】:

我在 VS2010 中使用 C# ConcurrentQueueConcurrentQueue 变量是静态的,对象从不同的线程排队。在另一个连续运行的线程中,我正在将此对象出队并存储在数据库中。在对象入队之后,它也被发送到 wcf 服务。最近,我们发现 wcf 服务发送和记录的对象很少,但在出队的地方没有记录。

问题: 该对象是否可能未入队?如何判断对象是否入队?

注意:出列对象时不会记录异常。新对象以大约 1000 个/分钟的速度接收和排队。

【问题讨论】:

  • Enqueue 应该总是可以工作,但它可能需要等待一个锁,也许它只是被阻塞了?在没有看到您的代码排队项目或发送 WCF 请求的情况下,我无法提供任何建议。
  • 无法在此处粘贴代码。如果锁不可用,是否有可能丢弃对象?

标签: c# .net multithreading wcf


【解决方案1】:

我不确定与ConcurrentQueue 一起可用的任何事件。或者,我建议您创建一个类并包装您的ConcurrentQueue,然后将方法公开给Enqueue & Dequeue(实际上是从您的ConcurrentQueue 对象中入队和出队项目)。然后创建两个事件(两个自定义事件也需要成为包装器对象的一部分),这可以在您的 Enqueue 和 Dequeue 方法中触发,这将在线程执行 Enqueue 或 Dequeue 操作时调用您的服务方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2011-12-12
    相关资源
    最近更新 更多