搜索
aardio官方社区 门户 查看主题

请教多线程上传文件

发布者: meisen2002 | 发布时间: 2013-1-24 15:41| 查看数: 6167| 评论数: 13|帖子模式

  1.        
  2. io.open();  
  3. import inet.ftp;
  4. import thread.manage
  5. manage = thread.manage(3);       
  6. ftp = inet.ftp("127.0.0.1","test","test");
  7. func=function(i,ftp){
  8.         var result=ftp.upload("C:\Documents and Settings\Administrator\桌面\新建 文本文档.txt","test.html",2/*_INTERNET_FLAG_TRANSFER_BINARY*/);
  9.         io.print(result,i);       
  10. }



  11. for(i=1;10;1){
  12.         manage.create(func,i,ftp);
  13. }

  14. manage.waitClose();       
  15. ftp.close();

  16. execute("pause")  
  17. io.close();
复制代码
我想创建一个FTP连接,然后用多线程上传多个文件(以上拿一个文件测试的),可是这个总是报错,但是如果把FTP连接放到func方法里面就没问题了,请问FTP不能这么使用吗?

最新评论

不争 发表于 2013-1-24 16:22:59

线程函数 import语句要放到函数里面, 即然报错,当然是不能这么用了。

线程函数 import语句要放到函数里面,
即然报错,当然是不能这么用了。
meisen2002 发表于 2013-1-24 16:24:11

请问如果想打开一次FTP连接,上传多个文件呢

请问如果想打开一次FTP连接,上传多个文件呢
不争 发表于 2013-1-24 16:39:40

顺序上传就行了,你要想多线程并发上传 - 那个不支持。

顺序上传就行了,你要想多线程并发上传 - 那个不支持。
meisen2002 发表于 2013-1-24 16:51:51

我原来是按照顺序上传的,有点卡,后来改成的多线程。

我原来是按照顺序上传的,有点卡,后来改成的多线程。
不争 发表于 2013-1-24 17:05:24

单独创建一个线程上传就可以了

单独创建一个线程上传就可以了
meisen2002 发表于 2013-1-24 17:08:26

[quote][size=2][color=#999999]不争 发表于 2013-1-24 17:05[/color] [url=forum.php?mod=

不争 发表于 2013-1-24 17:05
单独创建一个线程上传就可以了

谢谢不争,我再改改看。
不争 发表于 2013-1-24 17:41:06

把控件的句柄作为线程函数的参数传进去,就可以显示进度了。 用 thread.waitOne() 等他上传完就不卡了,简单的用 win.invoke() 也可以

把控件的句柄作为线程函数的参数传进去,就可以显示进度了。
用 thread.waitOne() 等他上传完就不卡了,简单的用 win.invoke() 也可以。

可以一个线程一个连接,一般限制连接的也会限制线程。
你也可以试试curl支持批量任务并发执行,不过ftp的话还是inet.ftp用法简单一些,弄起并发来如果不是很有必要可能是把简单的事搞复杂了。
不争 发表于 2013-1-24 17:47:35

大概的代码如下:[code]线程函数 = function(hwndProgress,hwndText){ import win; import

大概的代码如下:
  1. 线程函数  = function(hwndProgress,hwndText){

  2.         import win;
  3.         import win.ui.ctrl.progress;
  4.         import win.ui.ctrl.static;
  5.        
  6.         //线程内绑定进度条控件
  7.         ..progress = win.ui.ctrl.progress();
  8.         ..progress.hwnd = hwndProgress;
  9.        
  10.         //线程内绑定静态文本框控件
  11.         ..lbInfo = win.ui.ctrl.static();
  12.         ..lbInfo.hwnd = hwndText;       
  13.        
  14. }

  15. var hThread = thread.create( 线程函数
  16.         ,winform.progress.hwnd
  17.         ,winform.static.hwnd
  18.         )

  19. thread.waitOne(hThread)
  20. raw.closehandle(hThread)
复制代码
meisen2002 发表于 2013-1-25 08:31:38

[i=s] 本帖最后由 meisen2002 于 2013-1-25 08:34 编辑 [/i] 我是在HTMLAYOUT里面做的,我也看了很多多线程的例子,

本帖最后由 meisen2002 于 2013-1-25 08:34 编辑

我是在HTMLAYOUT里面做的,我也看了很多多线程的例子,但是都是结合WIN窗口下的,不知道在HTMLAYOUT里面的句柄这怎么实现,我记得不争你上次回答别人问题时候说过,HTMLAYOUT里面的每个页面是单进程的。i
SuperT 发表于 2013-8-15 14:48:02

收藏一下。。。

收藏一下。。。
a38809972 发表于 2015-7-7 21:15:35

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=51092&ptid=9333][co

meisen2002 发表于 2013-1-25 08:31
我是在HTMLAYOUT里面做的,我也看了很多多线程的例子,但是都是结合WIN窗口下的,不知道在HTMLAYOUT里面的 ...

我也想知道答案啊。
bensonhb 发表于 2015-7-7 21:53:57

一直搞不懂多线程,还得要再研究!

一直搞不懂多线程,还得要再研究!
kaba47 发表于 2016-4-24 18:13:52

新手,看得有点不大明白

新手,看得有点不大明白

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-11-23 21:01 , Processed in 0.062500 second(s), 18 queries , WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表