C#:如何在调用事件时退出方法

时间:2013-03-27 16:42:29

标签: c# multithreading smpp

我有一个附加事件,如:

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()

有可能吗?或者有其他方法可以做到吗?或者我可以同步方案吗?

2 个答案:

答案 0 :(得分:0)

创建一个在线程之间共享的布尔变量(例如,名为KeepRunning)。在方法内循环,定期检查布尔变量,如果方法为假,则退出方法。在控制线程中,如果希望方法退出,请将布尔变量设置为false。

答案 1 :(得分:-1)

你应该在一个新线程中运行mySmppClient_evDeliver_Sm(),你可以随时中止它。