1

我正在编写一个小程序来执行一些数据库操作,并且有一个关于设计的小问题。

我的程序的一部分会监视日志文件的更改,这涉及包含在类中的代码。所以用法是这样的:

auto fileWatcher = new FileWatcher(fileName);
fileWatcher.onChange(delegate);
fileWatcher.start();

一旦调用了 start 方法,就会在类中输入一个循环并监视文件。通过调用已注册的委托来处理更改。该循环针对不同的平台使用不同的监视方法。

我需要做的是停止当前的手表并更改观看的文件。

因为这是在一个无限循环中,我无法从外部检查,即在类之外,如果我需要中断循环只是因为控制永远不会返回给start()方法的调用者。

我在这里错过了一些简单的东西吗?欢迎任何建议。我考虑过线程和消息传递,但这对于像这样简单的事情来说可能有点过分了?

4

1 回答 1

1

产生另一个线程进行检查

您可以while(!atomicLoad(stop)){在循环中执行 a 并调用一个stop()方法,将成员字段设置stoptruewith aa atomicStore(stop,true)both fromcore.atomic

于 2013-06-16T20:39:31.473 回答