我有一个非常基本的应用程序,它使用生产者任务和消费者任务来处理文件。它基于此处的示例http://msdn.microsoft.com/en-us/library/dd267312.aspx
该程序的基础是 Producer 任务枚举我硬盘上的文件并计算它们的哈希值并执行其他一些操作。一旦 Producer 处理完一个文件,它就会 Enques 文件,然后 Consumer 抓取它。
Consumer 任务必须连接到远程服务器并尝试上传文件。但是,如果消费者遇到错误,例如无法连接到远程服务器,我需要它向生产者任务发出信号,告知它应该停止正在做的事情并终止。如果服务器宕机或宕机,生产者无需继续循环浏览数千个文件。
我已经看到大量通过在 BlockingCollection 对象上使用 .CompleteAdding() 从 Producer 任务向 Consumer 任务发出信号的示例,但我不知道如何从 Consumer 向 Producer 发送信号,表明它应该停止生产。