现使用IDFTP向服务器上传文件,文件是定时生成的,生成文件是程序控制知道何时生成.现在想实现,一生成文件就开始上传,不知道用什么方法来实现,目前想的是一生成文件就开一个子线程去上传文件,但这样会出现如果上个文件还不有传完,又开始传下个文件,这个如果网络慢的话,线程就越来越多,总觉得这样操作不妥当,且对线程操作也不熟悉..请大家帮忙想想有什么方法来实现..

解决方案 »

  1.   

    一个上传线程就够了参见以前我回的
    http://topic.csdn.net/u/20120112/16/8d713c80-ad6d-472f-9ffc-dcbcfea42e71.html如果线程不熟悉,就用timer来查是否有需上传的文件
      

  2.   


    你以前回答的那个我看了,但还不是很明白。目前我是把IDFTP的上传功能放在线程中的。想实现的功能是一有新文件生成就去上传这个文件,文件生成的速度可能会比上传的速度快,就是上个文件还没有上传完,又产生一个新文件需要上传了,用TLIST来管理上传文件,怎么样线程中操作呢,即线程中的操作TLIST时界面是不是就不能操作TLIST了,现在还是一头雾水。。请再给点提示。
      

  3.   

    是互斥的,如果互斥部分代码非常小(即不需要互斥的都拿出去)我那个回复里,通过使用临界区的方式,只互斥了一下与TList.count有关的读写:上传线程里取值时;主线程里添加新项目时;上传线程删除一个项目时。也就是说,上传线程取数量或删除一个的时候,主线程是不能加的,要等;主线程添加的时候,上传线程不能读和删除,也要等。但这个等的时间是极短的,因为互斥部分的代码非常小。这互斥只限于这些动作,只要不是这些动作,大家各干各的,互不干涉。生成快,上传慢。这就是程序用线程或timer来做的目的,所谓的前后台各搞各的,但不能乱了步点。不知道,这样说能否明白?
      

  4.   

    谢谢erhan的热心帮助。
    基本明白你的意思了,但这个互斥代码怎么写。没有发现TLIST有锁之类的方法。请给点代码提示。谢谢了。。
      

  5.   

    参考erhan的思路,已实现……这几天忘记结帖了,不好意思……