events - MATLAB 事件和无限休眠或检查循环

标签 events matlab event-handling infinite-loop

我需要在目录中的文件进入时对其进行数据分析。

我想知道是否更好,

  1. 在目录上实现事件监听器,并在激活时启动分析过程。然后让程序永远进入休眠状态:while(true), sleep(1e10), end

  2. 或者循环轮询更改并使用react。

我个人更喜欢监听器方式,因为可以对几乎同时进入的两个新文件开始分析两次,但会产生两个事件。而另一个解决方案可能只处理第一个,然后找到第二个新数据。
选项 1 的其他想法:通过调用 frames=java.awt.Frame.getFrames 并在 上设置 frames(index).setVisible(0) 来隐藏 matlab GUI >indexcom.mathworks.mde.desk.MLMainFrame 框架匹配。 (这个想法取自Yair Altman)

还有其他方法可以实现这样的事情吗?

最佳答案

在这种情况下(如果您使用的是 Windows),最好的方法是使用 .NET 的强大功能。

fileObj = System.IO.FileSystemWatcher('c:\work\temp');
fileObj.Filter = '*.txt';
fileObj.EnableRaisingEvents = true;
addlistener(fileObj,'Changed',@eventhandlerChanged);

有不同的事件类型,您可以为它们使用相同的回调,也可以使用不同的回调:

addlistener(fileObj, 'Changed', @eventhandlerChanged );
addlistener(fileObj, 'Deleted', @eventhandlerChanged );
addlistener(fileObj, 'Created', @eventhandlerChanged );
addlistener(fileObj, 'Renamed', @eventhandlerChanged );

其中 eventhandlerChanged 是您的回调函数。

function eventhandlerChanged(source,arg)
   disp('TXT file changed')
end

无需使用 sleep 或轮询。如果你的程序是基于UI的,那么没有什么可做的,当用户关闭图形时,程序就结束了。事件回调的执行方式与按钮单击完全相同。如果您的程序是类似脚本的,则可以使用无限循环。

更多信息在这里:http://www.mathworks.com/help/matlab/matlab_external/working-with-net-events-in-matlab.html

关于events - MATLAB 事件和无限休眠或检查循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10915675/

相关文章:

events - 跟踪用户不在网站时发生的 Google Analytics 事件

javascript - 检测div何时为 "unloaded"

matlab - 颜色图三种颜色

c# - 在图片框上创建平滑线(winforms,c#)

javascript - iframe 不触发 resize 事件

javascript - 有没有办法找出声音何时停止在 Javascript 中播放?

python - PyQt 中信号处理程序会内存泄漏吗?

matlab - 如何在 Matlab 中绘制带通滤波器传递函数的频率响应?

matlab - 在 Matlab 轴中,如何在保持所有轴属性的同时只更新数据?

azure - 发送有关在 azure data Lake gen 1 中创建新文件的事件