线程问题,求助!!!

周成风 2008-06-17 04:06:30
小弟最近做一个脚本程序,允许在软件中使用脚本,并编译使用。
脚本编译和运行单开线程控制,现在无法在脚本运行情况下停止脚本运行,并没有任务资源问题,请大家帮我想想办法!
线程使用的界面线程。
试过发送消息到线程,但由于线程在执行脚本,无法及时响应消息。导致运行脚本后才执行,达不到需要的效果。
...全文
213 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
周成风 2008-06-25
  • 打赏
  • 举报
回复
脚本程序不一定编的是什么!不一定是Excel,也可能是对软件内部的数据进行处理。
没有好的办法吗?
jameshooo 2008-06-19
  • 打赏
  • 举报
回复
脚本状态迁移需要时间,并且很容易产生死锁,脚本使用excel时有没有挂接连接点?如果有一定要先断开,否则脚本引擎无法退出
周成风 2008-06-19
  • 打赏
  • 举报
回复
IActiveScript::InterruptScriptThread()这个方法看说明是可以中断线程的。
但当第一个参数设置为SCRIPTTHREADID_CURRENT中断没反映,设置为其他两个参数时程序崩溃。。
jameshooo帮帮忙啊!
周成风 2008-06-19
  • 打赏
  • 举报
回复
调用Close方法好象还是停止不了。
比如我现在脚本正在执行往Excel中写入数据,调用Close后还在继续往Excel中写入。。
周成风 2008-06-19
  • 打赏
  • 举报
回复
谢谢楼上的!
对,就是标准脚本引擎!我试试你说的方法。有这方面的文档吗?
jameshooo 2008-06-18
  • 打赏
  • 举报
回复
是Windows的标准脚本引擎吗?如果是,调用IActiveScript::Close()就能中断执行(但不表示能马上中断),脚本线程跑到检测退出信号的地方也需要时间,而且清理脚本的对象更需要时间。
周成风 2008-06-18
  • 打赏
  • 举报
回复
脚本不是我自解释的。调用的是一个类似的COM接口实现的脚本解释和运行。
所以脚本执行其实就是调用了一个函数。。
TerminateProcess会导致很多问题啊,试过但多停止两次就出错了!
liyinlei 2008-06-18
  • 打赏
  • 举报
回复
在执行脚本的线程里,用PeekMessage做消息循环,如果来了退出消息则ExitThread,否则就执行一句脚本(每次循环执行一句)
jameshooo 2008-06-17
  • 打赏
  • 举报
回复
自己实现的脚本引擎?那不是想怎么控制就怎么控制吗,随时等候主线程的退出指令。
Eleven 2008-06-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 vocanicy 的回复:]
脚本应该设计成解释执行的

在你的解释器中没执行一条语句,就判断一下结束标志


如果你用的不是自己写的解释器,就只能用TerminateProcess强行结束了
[/Quote]
cppwin 2008-06-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 vocanicy 的回复:]
脚本应该设计成解释执行的

在你的解释器中没执行一条语句,就判断一下结束标志


如果你用的不是自己写的解释器,就只能用TerminateProcess强行结束了
[/Quote]
高见
vocanicy 2008-06-17
  • 打赏
  • 举报
回复
脚本应该设计成解释执行的

在你的解释器中没执行一条语句,就判断一下结束标志


如果你用的不是自己写的解释器,就只能用TerminateProcess强行结束了
孤客天涯 2008-06-17
  • 打赏
  • 举报
回复
线程安全问题?
yjgx007 2008-06-17
  • 打赏
  • 举报
回复
mark.
ouyh12345 2008-06-17
  • 打赏
  • 举报
回复
没看明白。
主线程另开线程执行脚本,怎么会阻碍主线程的消息接收?

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧