I've done some thinking about how you can avoid the locking
up of the gui while the new messages are retrieved. That is,
if you don't want to attempt some fork()ing and force everyone
to upgrade to perl 5.6.
My solution is to separate the gui from the calls to retrieve
the messages and have the messages stored in a file. Then
make it so the program can be started with an argument, to
tell it which mode it should start up in.
So, you would launch the program in gui mode first, then it
would use the Win32::Process module to launch a second copy
of itself in retrieval (non-gui) mode. So then you have 2
processes running independantly of each other, communicating
via disk files.
It's a kludge, but it totally gets rid of the problem with
the frozen gui. Unfortunately it requires nearly a complete
rewrite of the code.