C# 事件不';直到当前事件完成后才触发

C# 事件不';直到当前事件完成后才触发,c#,multithreading,asterisk,C#,Multithreading,Asterisk,我正在使用Asterisk.NET库开发一个应用程序,我订阅了一个事件“NewStateEvent”,以获取来自服务器的传入呼叫。。 现在,我注意到在最后一个NewStateEvent完成之前,NewState事件不会再次发生。我假设它在一个线程上工作;只有当最后一个线程完成时,才会启动另一个线程。。。(我不得不调用表单以在事件中使用表单控件)。。。 有没有办法在我的NewState事件中允许一个线程的多个实例???我假设您在事件处理程序中做的事情需要一些时间?在这种情况下,除非您有权修改库本身

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

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


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

我可以为此使用队列吗??将参数排队,并为事件方法订阅队列事件???确保可以将接收到的所有事件排队,并在另一个线程上处理它们。请注意,如果您只在一个线程上处理它们,您将很快回到最初的状态,一次只处理一个事件begin processed。