我有一个程序可以分析源代码。它可以递归遍历一个目录找到所有项目,然后递归遍历项目找到所有源代码。
我想创建一个取消进程按钮,它允许用户停止代码解析。我在后台工作人员中运行代码解析。我希望能够观看取消事件。
问题是弄清楚如何编辑我的代码,以便它会检查该项目并返回到 GUI。解析过程深入了几个方法。
在一个小得多的过程中,我成功地使用了一个线程安全的单例,它有一个布尔值,表示是否已请求取消,并在它运行的地方停止循环。
将此取消请求处理到我的代码中的最佳方法是什么?
编辑:这是一个想法,灵感来自约翰桑德斯的回答。
如果我在我的处理线程中运行一个后台线程来监视 Cancel Singleton 的变化,然后从该进程中抛出一个异常怎么办?这似乎是一种很好的做法? 这不能按预期工作
编辑 2:John Saunders 的回答似乎是目前最好的。当 Singleton 现在为真时,我只会抛出我自己的异常。我会等着看是否提出任何其他解决方案