在一分钟内处理一个C#项目 - 关于我正在尝试做的一般概念是......
用户有一个或多个投资组合,其中包含他们感兴趣的符号, 每个组合将符号上的数据下载到csv,解析它,然后对数据运行一组规则, 警报是根据这些规则的结果生成的 投资组合应该在设定的时间间隔过后下载数据等
我计划让每个组合在其自己的线程上运行,这样当间隔时间过去时,每个组合可以继续下载数据,同时解析和运行规则,而不是一个接一个。然后应将警报推送到包含警报队列的另一个线程(!)。当它收到警报时,会将它们发送给客户端。
有点多但是用C#解决这个问题的最佳方法是什么 - 使用线程,或者类似后台工作程序,只是让警报队列在一个单独的线程上运行?
任何建议都非常感谢,对这些东西不熟悉所以请随时告诉我,如果我完全错了:)
答案 0 :(得分:4)
您可以使用blocking collection。这是c#4.0中的新功能,用于支持生产者消费者场景。
它还支持1个消费者和多个生产者。
答案 1 :(得分:0)
如果这是完全间隔驱动的,您可以在每个间隔结束时将警报上传到客户端,那么您可以使用简化方法:
当您的间隔计时器触发时:
如果您需要在上传完成之前开始处理下一个时间间隔,您可以使用双缓冲方法写入一个List,将其提供给upload方法,然后开始将警报写入新List,在收集和上传警报时,在列表之间来回切换。