(为理由 - 我从来没有使用线程的工作所以下面的描述仅仅是一个想法,我希望你能骂)线程,队列和工作流程
的任务概述:
- 有一些名单对象
- 我们需要检查对象是否以某种方式更改
- 如果更改 - 应用一些逻辑(例如 - 显示通知)。
这是我认为它应该实现:
我们创造定时器,触发每分钟,这遍历对象列表,找到需要进行检查的对象。之后,我们将该对象(或特定的 - 包含对象和任务描述的某个任务对象,以检查它是否已更新)添加到队列中。
工作者(线程池中的某个线程)等待,直到将某些内容添加到队列中,并在发生之后 - 它接受任务并对其进行处理:检查对象是否已更改。如果是这样 - 它增加了另一个任务,通知一个。现在,如果有必要,处理通知任务的另一名工作人员将处理此任务。
那么,这是完全错误的想法?这里可以改进或改变什么?
UPD:根据第一个回答:对象依赖于某些repote资源,而“change”意味着某些远程数据发生了变化(或以某种特定方式更改)。所以这不能用INotifyPropertyChanged
来解决。
有 - 因为“检查”操作可能是“长”,因为对象与某些远程第三方资源有关。 – zerkms 2010-08-27 06:03:47
“,也没有任何要求并行处理它们,所以在工作线程中对它们进行简单循环” - 在这种情况下,所有工作时间和工作要做的逻辑 - 在同一个地方。有一个问题,我描述了当它们完全被队列分隔时的场景:一部分是做出更新决定,另一部分是做出决定处理,并在它们之间排队。 – zerkms 2010-08-27 06:07:40
我会说,这个答案或多或少是正确的 - 在对象上循环播放,触发一个Task来轮询每个对象,并向UI线程报告。这样你就不必担心管理轮询线程等问题了。 – 2010-08-27 06:16:44