日期:2014-05-17  浏览次数:20727 次

求数据处理方式
问题是这样的:有30个文件夹,每个文件夹下30秒上传5个文件,需要将这些文件最快的速度导入数据库并作出相应的统计(文件中记录的条数,特殊文件内容的提取等等)。
求大家给个较好的处理方式,谢谢了!
------解决方案--------------------
FileSystemWatcher的Created事件,监视文件创建,在事件的处理函数中,把文件的路径名称写入队列,开启N个线程处理这个队列即可。对文件的分析过程尽量采用异步的方式处理。

大概过程如下:
Queue FileQueue;

int main()
{
   StartThread(FileQueueProcess);
}

//文件创建时入队列
FileSystemWatcher_Created(Event)
{
lock(FileQueue)
{
    Enqueue(Event.File);
}
}

//Queue Process Thread,不停扫描队列,启动文件处理线程
FileQueueProcess()
{
    //每个文件用独立的线程处理
   if(FileQueue.Count>0)
    StartThread(FileProcess,FileQueue.Dequeue());
}
//File Process Thread
FileProcess(File f)
{
}