我目前正在使用一个使用来自不同部门的程序集的软件。
我把这个组件的方法是这样的:取消命令的执行时间太长
using (var connection = (IConnection) Factory.GetObject(typeof (IConnection)))
使用完全正常工作的代码。但是在最后几分钟里,当我尝试启动它时,似乎我的程序没有做任何事情。在调试过程中按下暂停,表明它在上面的线上“卡住”了。
我的猜测是他们只是在做一些维护或某些事情,但这不是重点。
所以我虽然很高兴告诉用户如果程序无法启动,出了什么问题。简单的东西就像
MessageBox.Show("Could not connect", "Connection Error");
然后关闭程序。我的问题是:
如何在一段时间后终止命令的执行并跳到别的地方?
我的猜测是将它移动到一个单独的线程,然后让调用线程休眠几秒钟,之后它会处理额外的线程,如果它尚未完成。但是,这似乎真的对我来说很脏,这是一个更好的方法。
如果你的'IConnection'是'SqlConnection',你可以使用它提供的默认连接超时。 – 2016-01-13 10:36:24
@Kilanny虽然使用非常相似,但它不是SqlConnection,没有人似乎打扰实现超时。 – Wilsu
否则使用'Timer'来检查执行,当超时时它应该终止作业 – 2016-01-13 10:44:02