【发布时间】:2014-04-01 02:12:29
【问题描述】:
我们有一个打开文件的函数(文件是自定义的 .oxr 文件)。问题是有时文件已损坏并且程序停止并且不继续并退出功能。因此整个程序都会受到影响。
我正在尝试开发一种方法,该方法会在几秒钟后使该功能超时。我已经使用线程实现了这一点。这是概念:- 我通过使用“thread.join”方法将函数作为线程调用,该方法等待几秒钟以执行线程函数。超时后,我只是中止线程。因此,调用在调用线程的点之后返回到代码。它按预期工作!
这个概念是好的做法吗?
【问题讨论】:
-
不,这不是一个好习惯。在您自己的进程中中止线程是不好的。如果您无法修复您的功能,请在单独的子进程中运行此不稳定操作并终止它。
-
@Aschratt,合作取消在这里不是一个选项,除非 OP 可以修复他的功能来处理损坏的数据(他应该首先做的)。
-
通话卡住时,是卡在循环还是阻塞?假设被阻塞,它被阻塞在什么呼叫上?
-
.oxr 格式的自定义文件已损坏,因此被阻止。那么会发生什么情况是文件在内部以代码打开,但卡在内部消息框,该消息框在通过代码访问时不会弹出...您是否遇到损坏的 .doc 文件.. Microsoft 已经创建了在文件时检测和超时的方法由于损坏原因无法打开...但这是我们的自定义代码..
标签: c# multithreading timeout