<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=us-ascii">
<style>BODY{font:10pt Tahoma, Verdana, sans-serif}</style></head><body>
<DIV>I just looked at your code, and it's really simple to fix :)</DIV>
<DIV>&nbsp;</DIV>
<DIV>In your tProc routine, add another ec.bind("SHUTDOWN",String.Empty) so that you get the shutdown events. Then in your while loop, if the event is "SHUTDOWN", then set the _stop = true. Also you can get rid of the "_bind" list cause you're not using it...</DIV>
<DIV>&nbsp;</DIV>
<DIV>You also can get rid of implmenting IDisposable yourself, since mod_managed does not Dispose() for you. As long as you exit your thread loop when you get the "SHUTDOWN" event, you should be fine.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Also since you are implmenting an API interface, you may want to do something like:</DIV>
<DIV>if(context.args.ToLower() == "shutdown")</DIV>
<DIV>&nbsp; _stop = true;</DIV>
<DIV>So you can force it to shutdown, and then you can replace the DLL to load a new version while FS is still running.</DIV>
<DIV>&nbsp;</DIV>
<DIV>--Dave</DIV><BR>
<BLOCKQUOTE style="BORDER-LEFT: #0000ff 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px">
<HR>
<B>From:</B> Rafal Gwizdala [mailto:rafal.gwizdala@gmail.com]<BR><B>To:</B> FreeSWITCH Users Help [mailto:freeswitch-users@lists.freeswitch.org]<BR><B>Sent:</B> Sat, 21 Sep 2013 00:11:41 -0700<BR><B>Subject:</B> Re: [Freeswitch-users] mod_managed - beginner's question about an event listener module<BR><BR>
<DIV>Dave, there must be something else. I did as you suggested, but my module will hang during shutdown.
<DIV>The program hangs on EventConsumer.Dispose.</DIV>
<DIV><A href="http://pastebin.com/58NRKSPf">http://pastebin.com/58NRKSPf</A><BR></DIV>
<DIV>
<DIV>FreeSWITCH Version 1.5.6b+git~20130912T164754Z~d9216daedb (git d9216da 2013-09-12 16:47:54Z)</DIV></DIV>
<DIV>windows 7 64 bit</DIV>
<DIV><BR></DIV>
<DIV>but</DIV>
<DIV>if the EventConsumer is disposed before system shutdown (for example, after consuming a certain number of events), there is no problem, event receiver thread terminates correctly and system shuts down cleanly.</DIV>
<DIV>I think i can live with that. Thanks for your help.</DIV>
<DIV>R</DIV>
<DIV><BR></DIV>
<DIV><BR></DIV></DIV>
<DIV class=gmail_extra><BR><BR>
<DIV class=gmail_quote>On Sat, Sep 21, 2013 at 3:56 AM, Dave R. Kompel <SPAN>&lt;<A href="mailto:drk@drkngs.net">drk@drkngs.net</A>&gt;</SPAN> wrote:<BR>
<BLOCKQUOTE style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class=gmail_quote><U></U>
<DIV>
<DIV>To answer all your questions at once...</DIV>
<DIV>&nbsp;</DIV>
<DIV>put the EventConsumer inside a using() block, so it gets disposed.</DIV>
<DIV>&nbsp;</DIV>
<DIV>use a static boolean variable in a while loop to .pop the event consumer with a timeout, if pop returns null "continue" the while loop.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Subscribe to shutdown, it sets the loop variable to false.</DIV>
<DIV>&nbsp;</DIV>
<DIV>API command "shutdown" in the same module to set the variable to false also, so you can unload your module at will w/o crashing</DIV>
<DIV>&nbsp;</DIV>
<DIV>This whole loop shoud be run on it's own thread started from the Load() method.</DIV>
<DIV>&nbsp;</DIV>
<DIV>--Dave</DIV><BR>
<BLOCKQUOTE style="BORDER-LEFT: #0000ff 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px">
<DIV class=im>
<HR>
<B>From:</B> Rafal Gwizdala [mailto:<A href="mailto:rafal.gwizdala@gmail.com">rafal.gwizdala@gmail.com</A>]<BR><B>To:</B> FreeSWITCH Users Help [mailto:<A href="mailto:freeswitch-users@lists.freeswitch.org">freeswitch-users@lists.freeswitch.org</A>]<BR></DIV><B>Sent:</B> Fri, 20 Sep 2013 04:08:58 -0700<BR><B>Subject:</B> Re: [Freeswitch-users] mod_managed - beginner's question about an event listener module
<DIV class=im><BR><BR>
<DIV>(...) 
<DIV>my source code:&nbsp;<A href="http://pastebin.com/bKPyKSwS">http://pastebin.com/bKPyKSwS</A></DIV>
<DIV><BR></DIV></DIV></DIV></BLOCKQUOTE>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></DIV><BR>_________________________________________________________________________<BR>Professional FreeSWITCH Consulting Services:<BR><A href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</A><BR><A href="http://www.freeswitchsolutions.com/">http://www.freeswitchsolutions.com</A><BR><BR>FreeSWITCH-powered IP PBX: The CudaTel Communication Server<BR><A href="http://www.cudatel.com/">http://www.cudatel.com</A><BR><BR>Official FreeSWITCH Sites<BR><A href="http://www.freeswitch.org/">http://www.freeswitch.org</A><BR><A href="http://wiki.freeswitch.org/">http://wiki.freeswitch.org</A><BR><A href="http://www.cluecon.com/">http://www.cluecon.com</A><BR><BR>FreeSWITCH-users mailing list<BR><A href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</A><BR><A href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</A><BR>UNSUBSCRIBE:<A href="http://lists.freeswitch.org/mailman/options/freeswitch-users">http://lists.freeswitch.org/mailman/options/freeswitch-users</A><BR><A href="http://www.freeswitch.org/">http://www.freeswitch.org</A><BR><BR></BLOCKQUOTE></DIV><BR></DIV></BLOCKQUOTE>
<STYLE>
</STYLE>

<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></body></html>