Tag: 长时间运行的进程

如何在VBA中执行长时间运行的进程而无需使用PC抓取?

我有一个VBA应用程序创build一个COM对象的实例,然后不断轮询对象DataReady属性,看看是否有新的数据。 当新数据可用时,它将数据粘贴到电子表格中。 问题是这个macros(VBBA子例程)不断运行,这慢慢爬行爬行,并使计算机有点不可用,而进程正在运行。 有没有办法,我可以开始这个过程在一个单独的线程或做一个像.NET后台工作? 我的两个尝试是像这样使用一个while循环 While(True) If(myObject.DataReady) Do some stuff here End If WEnd 然后呢 Sub GrabNewPoint() If (myModule.NewDataReady_Receiver = True) Then Do some stuff here… End If If (StopTest = False) Then NextTime = Now() + TimeValue("00:00:20") Application.OnTime NextTime, "GrabNewPoint" End If 第二次尝试definitly工作更好,但它仍然大大减缓的事情。 有更好的解决scheme吗? 我的COM对象是我在C#中编写的一个类库。 当数据准备就绪时,我可以添加在类库中触发的事件,但是如何在VBA程序中侦听这些事件?

使用已有的EJB服务从Tapestry执行长时间运行的任务

我有以下情况。 我有我的网站用Tapestry写的。 在其中一页上,我需要生成一个相当大的Excel或PDF文档(大约20 MB)。 现在,由于整个过程需要时间,我要求我的用户稍微等一下。 然而,当我试图testing上限时,我注意到我的整个应用程序(不仅仅是web部分)冻结,因为这一代耗尽了所有的资源,其余的网站和应用程序变得没有反应。 以下是我迄今为止所做的stream程。 用户点击一个button来请求页面上的文件 数据正在从数据库中取出(这部分相当快) 数据被传递给一个Tapestry服务,它准备(没有什么特别的,也很快) 准备的数据被发送到EJB服务,创build和部署创buildexcel / pdf文件的访问者 创build的文件的InputStream一直传递到Tapestry,它将其封装在StreamResponse并提供下载 什么是解决这个问题的恰当方法? 我可以用这种方式从我的一些Tapestry服务中使用Tapestry的ParallelExecutor吗? Future<InputStream> future = executor.invoke(new Invokable<InputStream>() { … }); 我的主要目标是应用程序和网站继续运行,他们不冻结。 先谢谢你。