说明:向一个目录(如SourceDir)里快速写入文件(1000张/分钟),同时,另一个进程的应用程序将文件移动到局域网的另一台机子上按文件创建的年、月、日时间分别存储,现在的问题是,当目录里的文件数量积压过大(超过1000)时,移动文件会很慢,不知道为什么。    我的操作方法是:用一个FileSystemWatcher对象监视目录SourceDir,当该目录生成一个新文件时,加入集合,当文件数达到200时,触发一个事件,然后执行一个异步委托方法去执行移动文件的任务,如此反复。现在的问题是,文件移动的速度慢于文件生成的速度,当文件积压时,移动的速度更慢,以至我的程序中显示的任务数越来越多,哪位有更好的办法,能让速度得到优化,我这里先谢谢各位热心朋友了!

解决方案 »

  1.   

    多谢jiezhi的关注!
        1.文件生成的速度不受我控制的。
        2.生成的文件都在一个目录里,不知道如何“要先查找到目标文件”?
      

  2.   

    还有本人还不清楚Windows的文件、目录的存储原理,愿高手赐教!
      

  3.   

    我现在采用别一种方法:
        用FileStream从文件中载入到缓存中(byte[]),删除文件,然后用将缓存写入流中用FileStream在局域网中创建一个新文件,但是又有新的问题,老是提示说"指定的网络名不再可用",可局域网没有问题啊,不知道是不是因为传输文件太多的原因,郁闷!
      

  4.   

    逻辑有问题啊,不需要到达200任务时就执行移动的异步委托,你只需要一个移动操作,当文件数目超过一定数目,直接执行移动就可以了啊移动过程这样写:while(true)
    {
        string files = Directory.GetFiles(...);
        if(files.Length == 0) break;    foreach(string name in files)
        {
            if(File.Exists(name)) 移动文件
        }
    }
      

  5.   

    To tiaoci:这样的处理速度很慢,每1000张/分钟图片都来不及,更何况还要测试5000张/分钟。目前怎样提高处理速度才是第一要素,至于系统硬件是至强2.4双cpu,1G内存。