假如我有一个Web service 里面有一个方法正在执行.....
我想中途停止这个方法...求各路大神 指教....
把你这个方法拆分成很多细小的方法,每个细小方法执行前都判断一次是否被取消。
判断是否取消?抱歉!我不知道怎么判断一个方法是否被取消?
@恒_心: 那你的意思是,你觉得这个方法应该停止了,那么你运行一个语句,这个方法就应该停止了,是这样吗?
@Launcher: 因为这个方法需要执行 太长的时间,而假如 我执行方法的时候 因为某个原因 需要停止这个方法,那怎么实现呢?谢谢
@恒_心: 看这里:http://q.cnblogs.com/q/53462/#c546708
然后我要告诉你,dudu 告诉你的方法不可行,因为线程不是这么运行的(参看:http://msdn.microsoft.com/zh-cn/library/ty8d3wta(v=vs.85).aspx)。即使在我上面链接中使用 Task 来运行和取消任务是可行的,但是它仍然使用到了我给你回答的第一种方式的原理。
最后,你应该回过头来问自己:
1、为什么要停止方法的执行?
2、是否可以通过异步的方式让此方法无害的执行完成?
3、为什么需要一个 webservice 执行一个超长时间的方法?
4、是否可以改进一下架构避免这种情况的发生?
我想到的一个解决方法:将这个方法放在独立的线程中执行,然后强制中止这个线程
用return , 例如, 我想在 5点钟的时候终止, 在里面加上 if (DateTime.Now.Hour == 6) { return ; }