在当前事件结束之前,事件不会触发

时间:2013-10-20 14:45:46

标签: c# multithreading asterisk

我正在使用Asterisk.NET库开发一个应用程序,我订阅了一个事件“NewStateEvent”来获取来自服务器的传入调用。 现在,我注意到NewState事件不会再次发生,直到最后一个NewStateEvent结束。我假设它在一个线程上工作;只有当最后一个线程完成时才会启动另一个线程...(我不得不在事件中调用表单来使用表单控件)... 有没有想法在我的NewState事件中允许一个线程的mumltiple实例?

1 个答案:

答案 0 :(得分:0)

我假设你在事件处理程序中做了一些需要花费一些时间的事情?在这种情况下,除非您有权修改库本身,否则我建议您立即在事件处理程序中启动自己的线程,然后执行长期运行的任务。这样可以避免将其全部锁定,并且您可以接收其他事件。

有很多方法可以做到这一点。 BackgroundWorker,使用ThreadPool,使用异步方法或只是手动启动新线程。