<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Hi everyone,<br><br>I posted previously on haskell-beginners about an issue which would have been better directed to this list. Since then, I have revisited the issue and am now even less certain of its cause.<br><br>I have to perform cleanup when my application terminates. GHC.ConsoleHandler handles cleanup from Ctrl-C and Ctrl-Break very nicely under Windows. My sample handler and main function are shown at [1].<br><br>When I press Ctrl-C and Ctrl-Break during threadDelay, messages are written to console_event.log as I expected. When I press the Close button during threadDelay, no message is written to console_event.log. Am I missing something fundamental about handling the Close button or installing handlers?<br><br>In case it makes a difference, I'm using GHC 6.12.3 under Windows XP.<br><br>Thanks,<br>Colin<br><br>[1]<br>module Main where<br><br>import Control.Concurrent (threadDelay)<br>import GHC.ConsoleHandler<br>import System.IO<br><br>onConsoleEventReceived :: ConsoleEvent -&gt; IO ()<br>onConsoleEventReceived event = withFile "console_event.log" AppendMode $ \ file -&gt; do<br>&nbsp; hPutStrLn file $ case event of<br>&nbsp;&nbsp;&nbsp; ControlC&nbsp; -&gt; "Received Ctrl-C event"<br>&nbsp;&nbsp;&nbsp; Break&nbsp;&nbsp;&nbsp;&nbsp; -&gt; "Received Ctrl-Break event"<br>&nbsp;&nbsp;&nbsp; Close&nbsp;&nbsp;&nbsp;&nbsp; -&gt; "Received X button event"<br>&nbsp;&nbsp;&nbsp; _&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt; "Received other console event"<br>&nbsp; hFlush file<br>&nbsp;&nbsp;&nbsp; <br>main :: IO ()<br>main = installHandler (Catch onConsoleEventReceived) &gt;&gt; threadDelay (20*1000000)<br>&nbsp; <br>                                               </body>
</html>