代码执行时间过长,如何停止执行

我们有C#应用程序来爬行和执行代码。但是有些时候系统响应因为代码执行时间过长。我们如何在10秒后停止执行代码,应用程序将不再停止响应。     
已邀请:
解决此问题的方法取决于您设计长时间运行的方式。所以,没有进一步的细节,我只能提供一般指针。 如果您的代码需要很长时间才能执行,因为您没有及时从远程系统(即db,网站等)获得响应,那么请考虑超时。如果您用于进行远程调用的API不支持超时,请考虑类似CircuitBreaker模式: http://davybrion.com/blog/2009/07/protecting-your-application-from-remote-problems/ http://timross.wordpress.com/2008/02/10/implementing-the-circuit-breaker-pattern-in-c/ 如果只是你的应用程序正在做很多工作,请确保你在UI线程以外的线程上做这项工作,正如Twitch所说,以保持UI的响应。 如果你正在使用一个很长的循环进行内部工作,那么可能值得在该循环中重复检查以满足取消条件(这可能是从不同的线程设置的标志,甚至是经过的时间)。这种方法称为合作取消。   关于.Net 4.0取消框架的这篇文章提供了一些很好的背景,以及它引用的这篇文章。     
你必须为程序添加一些方法来告诉windows“不,它没有被冻结,它正在工作”,要么通过在另一个线程中进行所有处理和爬行,要么通过做某种形式的通知,比如每隔几次打印一些东西帧。     
您可以调用Application.DoEvents在GUI线程中执行长任务时执行事件。这样它就不会阻止GUI。 你应该考虑在一个线程中运行长任务,因为你可以获得更多的直接控制。     

要回复问题请先登录注册