我有一个附加事件,如:
mySmppClient.evDeliver_Sm += new SmppClient.Deliver_SmEventHandler(mySmppClient_evDeliver_Sm);
mySmppClient_evDeliver_Sm(){
// have some code here.
}
和另一种方法,如:check_outbox();
应用程序始终检查check_outbox()
方法。
现在,如果代码调试指针进入check_outbox()
方法,同时事件触发,那么应用程序就会挂起。因为它开始为mySmppClient_evDeliver_Sm()
工作。
我的问题是:如果事件触发,则check_outbox完成当前任务,然后它将调用mySmppClient_evDeliver_Sm()
。
有可能吗?或者有其他方法可以做到吗?或者我可以同步方案吗?
答案 0 :(得分:0)
创建一个在线程之间共享的布尔变量(例如,名为KeepRunning)。在方法内循环,定期检查布尔变量,如果方法为假,则退出方法。在控制线程中,如果希望方法退出,请将布尔变量设置为false。
答案 1 :(得分:-1)
你应该在一个新线程中运行mySmppClient_evDeliver_Sm()
,你可以随时中止它。