代码之家  ›  专栏  ›  技术社区  ›  zerkms

线程、队列和工作流

  •  1
  • zerkms  · 技术社区  · 14 年前

    (作为理由-我从来没有使用过线程,所以下面的描述只是一个我想让你批评的想法)

    任务概述:
    -有一些对象的列表

    -如果更改了-应用一些逻辑(例如-show notify)。

    我认为应该这样实施:

    Worker(线程池中的某个线程)等待,直到有东西添加到队列中,然后在它发生之后—它接受任务并处理它:检查对象是否已更改。如果是这样-它会添加另一个任务,通知一个。现在,另一个处理通知任务的worker将在必要时处理此任务。

    升级版 :根据第一个答案:对象依赖于某个repote资源,“change”表示某些远程数据已更改(或以某种特定方式更改)。所以这个问题是无法解决的 INotifyPropertyChanged

    2 回复  |  直到 14 年前
        1
  •  3
  •   Ian Mercer    14 年前

    如果这些“对象”是.NET对象,为什么要轮询它们?为什么不实现像 INotifyPropertyChanged 接口,并有一个适当的,立即通知的变化?

    否则,如果它们实际上是某种可以 只有 如果要通过轮询进行测试,那么触发一个事件(该事件随后轮询每个对象并将通知调用回UI线程)的计时器可能就足够了,或者如果您希望计时器事件快速完成(例如,这样它就可以立即响应另一个事件),则触发 Task 去检查每个对象并通知UI(使用调用)它是否已经更改。

    不需要将每个单独的对象排队并分别处理它们(是否存在??),也不需要并行处理它们,因此在工作线程中对它们进行简单的循环(或 任务 )就足够了。

        2
  •  0
  •   Christopher Hunt    14 年前

    我只是想知道您是否可以考虑为挂起的任务设置一个队列。因此,推送到该队列的任何任务对象都在等待处理。在工作线程中,您在队列上阻塞,直到某个项目可用为止。如果需要一些并行性,可能会有多个工作线程执行此操作。