Multithreading 无限循环(While)和启用控制MS访问表单2003

Multithreading 无限循环(While)和启用控制MS访问表单2003,multithreading,forms,vba,loops,ms-access,Multithreading,Forms,Vba,Loops,Ms Access,我制作了一个函数,它使用do while(true)-无限循环(控制其他应用程序) 我正在搜索如何使表单可访问的解决方案-当我启动应用程序时,访问只是加载,我的表单无法更改。至少我试着让按键“S”停止一些“监听功能”,但它不起作用(也许我做得不好,可能吗?) 我刚用过 Do While (run) <code> Loop 我想我至少需要2个线程(1个线程处理无限,2个线程处理表单,但我读访问无法处理多线程) 我可以问,有没有可能做到这一点 一月MS Access或MS office

我制作了一个函数,它使用do while(true)-无限循环(控制其他应用程序)

我正在搜索如何使表单可访问的解决方案-当我启动应用程序时,访问只是加载,我的表单无法更改。至少我试着让按键“S”停止一些“监听功能”,但它不起作用(也许我做得不好,可能吗?)

我刚用过

Do While (run) <code> Loop
我想我至少需要2个线程(1个线程处理无限,2个线程处理表单,但我读访问无法处理多线程)

我可以问,有没有可能做到这一点


一月

MS Access或MS office是单线程平台,无法执行并行执行。一般来说,拥有一个盲环或不受控环根本不是一个好的实践。如果您有一个没有控制器的盲循环函数,则会浪费vba应用程序的进程周期

您可以做什么:

  • 使用计时器并设置代码必须执行的频率间隔
  • 在循环中添加“Do events”,以便在循环中的代码等待外部信号时,使用进程周期执行一些其他代码
  • 添加任何类型的控制器以中断循环。。简单if-else条件
  • 将代码迁移到外部.DLL,并在VBA外部执行/控制该函数

  • 简而言之,VBA无法执行线程。使用uncontrolled将冻结您的应用程序,这将迫使您使用[CTRL]+F12手动停止执行。

    我使用了函数“DoEvents”(它至少会对输入做出反应-键盘/鼠标)

    感谢您的快速回复。对于您建议的选项:1。我需要实时检查时间(现在()=有时)-无法使用2。我尝试添加按钮停止在我添加的功能改变布尔为假(它有任何影响)3。它需要永久运行,因为需要检查时间(它的schelude tasker-它启动其他应用程序的时间,以及它检查是否正常结束后)4。如果我使用.DLL并执行代码(true-无限循环)-表单是否可访问?