| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3873 人关注过本帖
标题:如何让程序预定执行一段代码(定时或闲时)
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 10楼 radiofan
可以参考7楼
2021-03-11 14:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用大树临风在2021-3-11 11:40:02的发言:


提到单线程,想起来每次编译EXE时VFP弹出的对话框,其中的单线程dll和多线程dll又是什么意思呢,是不是也可以做多线程的开发

编译生成dll,是一个COM组件,注册后就好象控件一样使用。
可编译成支持多线程的DLL,即可在多个子线程中使用,并不是说这个DLL里面就有多线程的东西。
2021-03-11 15:11
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
收藏
得分:0 
以下是引用吹水佬在2021-3-11 14:58:37的发言:

可以参考7楼


没有明白?
2021-03-11 16:21
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用radiofan在2021-3-11 16:21:56的发言:



没有明白?

意思是本来由一个人去做的事改为由多人分工协作共同去做
2021-03-11 18:49
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
收藏
得分:0 
以下是引用吹水佬在2021-3-11 18:49:57的发言:


意思是本来由一个人去做的事改为由多人分工协作共同去做


你的意思是用定时器去触发另一个exe去做后台同步数据?

也许,thisform.timer.enabled = .F.,让定时器暂时停止运行 ……

[此贴子已经被作者于2021-3-11 20:20编辑过]

2021-03-11 20:03
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 15楼 radiofan
不要用定时器来启动一个EXE,就是运行一个外部EXE,按需要适时启动或关闭
2021-03-11 20:25
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
收藏
得分:0 
以下是引用吹水佬在2021-3-11 20:25:41的发言:

不要用定时器来启动一个EXE,就是运行一个外部EXE,按需要适时启动或关闭


那这个exe何时启动,何时关闭,谁来调度呢?
2021-03-12 08:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 17楼 radiofan
几个人协同做事相互间可以沟通
了解一下“进程间通信”,进程间通信方式有多种,可视实际情况选择一种或多种灵活运用。
2021-03-12 09:37
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
收藏
得分:0 
以下是引用吹水佬在2021-3-12 09:37:12的发言:

几个人协同做事相互间可以沟通
了解一下“进程间通信”,进程间通信方式有多种,可视实际情况选择一种或多种灵活运用。


举个简单例子吧,谢谢!
2021-03-12 10:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏(1)
得分:0 
最简单的示例(消息)
test.rar (27.55 KB)

图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
** 主进程
** test1.exe
**
cDefPath = ADDBS(JUSTPATH(SYS(16)))
_screen.Visible = .F.
DECLARE LONG SendMessage IN User32 LONG, LONG, LONG, LONG
of = CREATEOBJECT("Form1")
of.show
READ EVENTS
RETURN

DEFINE CLASS Form1 as Form
    ShowWindow = 2
    hSubpro = 0
    ADD OBJECT cmd as CommandButton WITH top=10,left=10,height=22,caption="启动子进程"
    ADD OBJECT edt as EditBox WITH top=40,left=10,width=300,height=200
    
    PROCEDURE Init
        BINDEVENT(this.hWnd, 0x401, this, "_Message")
    ENDPROC
    
    PROCEDURE Destroy
        IF this.hSubpro > 0
            SendMessage(this.hSubpro, 0x401, 0, 0)
        ENDIF
        CLEAR EVENTS
    ENDPROC
    
    PROCEDURE cmd.Click
        oApp = CREATEOBJECT("Shell.Application")
        oApp.ShellExecute(cDefPath+"test2.exe", TRANSFORM(thisform.hWnd), "", "", 1)
    ENDPROC

    PROCEDURE _Message(hWnd, nMsg, wParam, lParam)
        DO CASE
            CASE wParam == 1
                this.edt.SelText = "子进程启动" + 0h0D0A
                this.hSubpro = lParam
            CASE wParam == 2
                this.edt.SelText = "子进程关闭" + 0h0D0A
        ENDCASE
    ENDPROC
ENDDEFINE


程序代码:
** 子进程
** test2.exe
**
PARAMETERS cParam
_screen.Visible = .F.
DECLARE LONG SendMessage IN User32 LONG, LONG, LONG, LONG
of = CREATEOBJECT("Form1", cParam)
of.show
READ EVENTS
RETURN

DEFINE CLASS Form1 as Form
    ShowWindow = 2
    AutoCenter = 1
    hMain = 0
    
    PROCEDURE Init(cParam)
        this.hMain = INT(VAL(cParam))
        SendMessage(this.hMain, 0x401, 1, this.hWnd)
        BINDEVENT(this.hWnd, 0x401, this, "_Message")
    ENDPROC
    
    PROCEDURE Destroy
        IF this.hMain> 0
            SendMessage(this.hMain, 0x401, 2, 0)
        ENDIF
        CLEAR EVENTS
    ENDPROC
    
    PROCEDURE _Message(hWnd, nMsg, wParam, lParam)
        DO CASE
            CASE wParam == 0
                MESSAGEBOX("主程序关闭")
                this.Release
            CASE wParam == 1
            CASE wParam == 2
        ENDCASE
    ENDPROC
ENDDEFINE



[此贴子已经被作者于2021-3-12 12:20编辑过]

2021-03-12 12:12
快速回复:如何让程序预定执行一段代码(定时或闲时)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034945 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved