搜索
查看: 1247|回复: 2
打印 上一主题 下一主题

使用thread.command从线程内读取网页返回主线程,为什么数据不完整?

[复制链接]

2

主题

10

帖子

100

积分

一级会员

Rank: 2

积分
100
跳转到指定楼层
楼主
发表于 2018-5-11 15:12:10 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
现在在学习多线程的使用,在线程读取网页,然后用thread.command把数据回传给主线程,但回传数据不完整是为什么,在这里向看到的人请教一下。

  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="线程命令";right=599;bottom=399)
  4. winform.add(
  5. edit={cls="edit";left=12;top=11;right=588;bottom=389;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=1}
  6. )
  7. /*}}*/

  8. import thread.command;
  9. var listener = thread.command();
  10. listener.print = function( ... ){
  11.     winform.edit.print( ... ) //我们在界面线程中这样响应工作线程的消息
  12. }

  13. //创建工作线程
  14. thread.invoke(

  15.     function(){
  16.    
  17.         //必须在线程函数内部导入需要的库
  18.         import thread.command;
  19.         import inet.http;
  20.         import console;
  21.         console.open()
  22.         var http = inet.http();
  23.         var TempTxt =   http.get("http://baidu.com");
  24.         //调用界面线程的命令
  25.         thread.command.print("hello world",1,2,TempTxt);
  26.         
  27.     }
  28. )


  29. winform.show();
  30. win.loopMessage();
复制代码
回复

使用道具 举报

2

主题

10

帖子

100

积分

一级会员

Rank: 2

积分
100
板凳
 楼主| 发表于 2018-5-14 08:19:05 | 只看该作者
Jacen.He 发表于 2018-5-11 16:23
不会传个参数都丢你的数据,
但是文本框不能无限制的塞文本进去。

试了一下,对的。感谢

  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="线程命令";right=599;bottom=399)
  4. winform.add(
  5. edit={cls="edit";left=12;top=11;right=588;bottom=389;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=1}
  6. )
  7. /*}}*/

  8. import thread.command;
  9. var listener = thread.command();
  10. listener.print = function( ... ){
  11.     winform.edit.print( ... ) //我们在界面线程中这样响应工作线程的消息
  12. }
  13. winform.edit.limit = 120000;
  14. //创建工作线程
  15. thread.invoke(

  16.     function(){
  17.    
  18.         //必须在线程函数内部导入需要的库
  19.         import thread.command;
  20.         import inet.http;
  21.         import console;
  22.         console.open()
  23.         var http = inet.http();
  24.         var TempTxt =   http.get("http://baidu.com");
  25.         //调用界面线程的命令
  26.         thread.command.print("hello world",1,2,TempTxt);
  27.         
  28.     }
  29. )


  30. winform.show();
  31. win.loopMessage();
复制代码
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13973
沙发
发表于 2018-5-11 16:23:28 | 只看该作者
不会传个参数都丢你的数据,
但是文本框不能无限制的塞文本进去。

遇到这类问题请先看一下函数说明,
winform.edit.print 只会输出有限的文本,后面的文本会覆盖前面的。
你可以自己修改限制,例如 winform.edit.limit = 120000;

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2018-10-21 23:26 , Processed in 0.078125 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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