搜索
查看: 2607|回复: 6

thread.works 这样不会工作?

[复制链接]

1

主题

3

帖子

17

积分

新手入门

Rank: 1

积分
17
发表于 2013-12-2 17:34:58 | 显示全部楼层 |阅读模式
本帖最后由 lyy2013 于 2013-12-2 17:38 编辑

  1. import win.ui;

  2. import thread.works;
  3. /*DSG{{*/
  4. var winform = ..win.form( bottom=399;parent=...;right=599;text="aardio Form" )
  5. winform.add(
  6. button={ bottom=224;right=480;left=304;top=120;z=1;text="button";cls="button" }
  7. )
  8. /*}}*/

  9. io.open();//打开控制台

  10.   
  11. var works = thread.works( 20,
  12.         function(...) {
  13.                 thread.lock("50A48716-7F12-42FF-8872-4C47DC47A56F")
  14.                  
  15.                  
  16.                 io.print("线程ID" + thread.getId(),",开始工作,接收到任务指令参数",...)
  17.                  
  18.                 thread.unlock("50A48716-7F12-42FF-8872-4C47DC47A56F")
  19.                
  20.                 return "返回值,线程ID" + thread.getId();
  21.         }
  22. );
  23.   


  24.    


  25. winform.button.oncommand = function(id,event){
  26.          
  27.          
  28.                   
  29. works.push("dsfsdfsd")  
  30.       
  31.   
  32.    
  33. }
  34.    

  35.   //等待任务完成
  36. works.waitClose(
  37.         function(r){
  38.                 io.print( "检查成果", r  )
  39.         }
  40. )

  41.   
  42. winform.show()

  43. win.loopMessage();
复制代码
回复

使用道具 举报

1

主题

3

帖子

17

积分

新手入门

Rank: 1

积分
17
 楼主| 发表于 2013-12-2 17:36:03 | 显示全部楼层

点击按钮 后 , 命令行窗口 没有任何显示.,

点击按钮 后 , 命令行窗口 没有任何显示.,   
回复

使用道具 举报

12

主题

309

帖子

1798

积分

荣誉会员

Rank: 8Rank: 8

积分
1798
发表于 2013-12-2 18:23:05 | 显示全部楼层

逻辑混乱吧,你还没有添加任务就 works.waitClose() 把线程全关闭了,需要退出的时候才执行这个函数。

逻辑混乱吧,你还没有添加任务就 works.waitClose() 把线程全关闭了,需要退出的时候才执行这个函数。
回复

使用道具 举报

1

主题

3

帖子

17

积分

新手入门

Rank: 1

积分
17
 楼主| 发表于 2013-12-2 18:45:14 | 显示全部楼层

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=63458&ptid=11290][c

auaau 发表于 2013-12-2 18:23
逻辑混乱吧,你还没有添加任务就 works.waitClose() 把线程全关闭了,需要退出的时候才执行这个函数。

works.waitClose  这个不是 回调 执行的吗?


像我这样的, 需要点按钮后 加入任务的 需要这么写 这个 work

点评

works.waitClose 是回调执行没错,他只是等待开始的work结束 你的代码到这里 还没有work开始工作他就直接关闭了 - -!! 等你点击按钮的时候 所有工作都结束了,也就***理会你分派的work了  发表于 2013-12-11 21:58
回复

使用道具 举报

12

主题

309

帖子

1798

积分

荣誉会员

Rank: 8Rank: 8

积分
1798
发表于 2013-12-2 19:38:39 | 显示全部楼层

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=63462&ptid=11290][c

lyy2013 发表于 2013-12-2 18:45
works.waitClose  这个不是 回调 执行的吗?


waitClose() 就是 wait() and close() ,你close了还怪他不能执行?  
你不想close() 调用 works.wait() 就行,那么大字的提示看不到啊, 一个函数不行你就换一个。
回复

使用道具 举报

12

主题

679

帖子

4008

积分

荣誉会员

子非魚、安知魚之樂

Rank: 8Rank: 8

积分
4008
发表于 2013-12-11 21:44:01 | 显示全部楼层

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=63462&ptid=11290][c

lyy2013 发表于 2013-12-2 18:45
works.waitClose  这个不是 回调 执行的吗?

你在按钮里面分派任务  只有等窗体关闭了才能检查工作
  1.   //窗体关闭的时候再来检查工作
  2. winform.onClose = function(hwnd,message,wParam,lParam){
  3.     works.waitClose(
  4.                 function(r){
  5.                         io.print( "检查成果", r  )
  6.                 }
  7.         )
  8. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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