Hi,

I've seen that if I try to create a Wx::Dialog from a secondary thread, it breaks the app, but if I create a Wx::MessageBox it works fine. So I tried to use a Wx::GetMultipleChoices. It displays well the dialog and it returns well the results, but if another thread tries to update the main window, in that moment the application crashes.

I don't know why Wx::GetMultipleChoices doesn't work as well as Wx::MessageBox, because they are created the same (without ->new().

I see that if I want to block other threads to update the GUI, I must use

wxMutexGuiEnter();
and
wxMutexGuiLeave();

I have tried to use

Wx::MutexGUIEnter();

my @result = Wx::GetMultipleChoices("Message", "Title", ['aa','bb','cc']);
print "@result\n";

Wx::MutexGUILeave();

but it didn't displayed the dialog and it printed the following error message:

Error while autoloading 'Wx::MutexGUIEnter' at Informatos/Server.pm line 84

I think Wx::MutexGUIEnter should work with WxPerl because I haven't seen any notice telling that it doesn't work.

I have also read that:

"Note that under GTK, no creation of top-level windows is allowed in any thread but the main one."

So I assume under Win32 it should work.

"This function is only defined on platforms which support preemptive threads."

But I don't know, is Win32 such a platform?

If it is, please tell me what am I doing wrong.

Thank you.

Octavian

Reply via email to