aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 12988|回复: 2

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

[复制链接]

2

主题

7

回帖

117

积分

一级会员

积分
117
发表于 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();
复制代码

170

主题

2169

回帖

1万

积分

管理员

积分
13161
发表于 2018-5-11 16:23:28 | 显示全部楼层
不会传个参数都丢你的数据,
但是文本框不能无限制的塞文本进去。

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

2

主题

7

回帖

117

积分

一级会员

积分
117
 楼主| 发表于 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();
复制代码
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2024-10-4 20:15 , Processed in 0.065728 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

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