我即将实施典型的FileSystemWatcher解决方案。我有一个要监视文件创建的目录,并且需要将创建的文件读取并插入到数据库中。大致上,这将涉及到读取和处理6或7个80个字符的文本文件,这些文件以每几秒钟一次的突发速率150毫秒的速度出现,很少会有一个2MB的二进制文件也需要被处理。这可能是一个24/7的过程。
根据我所了解的FileSystemWatcher对象,最好将其事件排队在一个线程中,然后在另一个线程中出队/处理它们。我现在面临的问题是,哪种方法是更好的处理线程的创建机制。我能想到的选择如下:
1. 每次获取FSW事件时手动创建一个新线程(是的,我知道...愚蠢的架构,但我必须说一下)。 2. 每当我收到FSW事件时,将处理抛到CLR线程池中。 3. 在启动时,创建一个专用的第二个线程进行处理,并使用生产者/消费者模型来处理工作。主线程将请求排队,第二个线程将其出队并执行工作。
我倾向于第三种方法作为首选方法,因为我知道工作线程总是需要的,而且可能更加需要,因为我对线程池没有感觉。
根据我所了解的FileSystemWatcher对象,最好将其事件排队在一个线程中,然后在另一个线程中出队/处理它们。我现在面临的问题是,哪种方法是更好的处理线程的创建机制。我能想到的选择如下:
1. 每次获取FSW事件时手动创建一个新线程(是的,我知道...愚蠢的架构,但我必须说一下)。 2. 每当我收到FSW事件时,将处理抛到CLR线程池中。 3. 在启动时,创建一个专用的第二个线程进行处理,并使用生产者/消费者模型来处理工作。主线程将请求排队,第二个线程将其出队并执行工作。
我倾向于第三种方法作为首选方法,因为我知道工作线程总是需要的,而且可能更加需要,因为我对线程池没有感觉。