From: Ralph Shnelvar Date: 2010-09-30T21:26:46+09:00 Subject: Re: Calling a method in the context of a specific thread ------------2F6920213628988 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Robert, Thursday, September 30, 2010, 12:10:34 AM, you wrote: RK> On 09/29/2010 03:22 AM, Ralph Shnelvar wrote: >> [Note: parts of this message were removed to make it a legal post.] >> Background: >> I am writing an FXRuby program. My question should be independent of FXRuby, though. >> FXRuby is a GUI for Ruby. >> If I understand some of the comments made here (and I probably don't) [see subject: interpreter cannot enter in the context from another thread] it is a bad thing to attempt to run an FXRuby function in a non-main thread. >> So ... I have a non-main thread that wants to display a message box (i.e. "call" FXMessageBox"). >> How can I invoke FXMessageBox in the context of the main thread? >> I can think of all sorts of ugly solutions. >> For instance: >> 1) Set some global_variable indicating the task I want to perform in the main thread. >> 2) Do a thread.stop >> 3) have a timer in the main thread and have it dispatch based on global_variable >> 4) save the return code of FXMessageBox in a thread local variable the not-main-thread >> 5) Do a thread.run to wake up the stopped not-main-thread. RK> 6) Have a task queue which is read in the main thread. You can even RK> store lambdas in there. Please explain more; a lot more. I am particularly confused how a task queue would work given that nothing in the main thread can block since that would stop FXRuby's message pump. ------------2F6920213628988--