我们有一个打开文件的函数(文件是自定义的.oxr文件)。问题是有时文件已损坏,程序停止并且无法继续并退出该功能。因此,整个程序都会受到影响。
我正在尝试开发一种方法,该方法将在几秒钟后使函数超时。我已经使用线程实现了这一点。这是概念:-我通过使用"thread.join"方法将该函数作为线程调用,该方法等待线程函数执行某些秒。超时后,我只是中止线程。因此,调用在调用线程的点之后返回到代码。它按预期工作!
这个概念是好的做法吗?
你对这个概念有多个问题:
-
使用异步代码很难实现,因为线程在执行过程中可能会更改,例如:该方法发出 Web 请求(线程 1),回调可以由另一个线程执行(具体取决于您的同步上下文)。
-
线程很昂贵。创建或停止线程需要花费大量时间,每个线程消耗大约 4 MB afaik。
-
中止线程时,会使对象处于未定义状态,无法预测在对象上调用方法时会发生什么。
-
不能通过线程中止来停止异步操作。
在我看来,如果您别无选择,可以这样做,我想像 IIS 这样的系统也有一些中止机制来提高稳定性,但您应该尽量不要这样做。