Hi Matt,

Are you sure you need to block the thread ? As in what happens if in the
managed add-in you store the context when the method is first called then
spin off a new thread, and finally invoke back on the original context ?  If
you can't do that, then a modal form sounds like a good idea to me because
if you are blocking the native app, then you should provide a cancel button
etc.


|-----Original Message-----
|From: [email protected] [mailto:ozdotnet-
|[email protected]] On Behalf Of Matt Siebert
|Sent: Friday, 15 October 2010 1:44 AM
|To: ozDotNet
|Subject: Message Loops
|
|G'day folks,
|
|Aside from Application.Run() and Form.ShowDialog(), are there any other
ways
|to run a message loop in a .NET app?  I'm not keen on rolling my own
message
|loop, I'm just wondering if there are other options already available.
|
|Why do I want to do this?  Well I'm developing an add-in for a native app
that
|hosts .NET (3.5).  The native app calls a method exposed by the add-in
which is
|then free to do whatever it needs to do before returning control to the
native
|app.  One caveat is that the add-in can only talk to the native app's API
on the
|thread that invoked it, attempting to do so on another thread is unstable
at
|best.
|
|In my add-in I want to host a WCF service for a client running in another
|process.  The service needs to be able to talk to the API so I'd rather not
host it
|on another thread.  The problem is that I need to prevent my add-in from
|returning control to the native app before the client has finished with the
|service.  I've looked at Application.Run(Form) and
|Application.Run(ApplicationContext) but the native app immediately resumes
|when these are called, then when the add-in eventually returns the native
app
|blows up.
|
|Form.ShowDialog() seems to be the only option that works, but I'm not keen
on
|showing a form whose sole purpose is to block execution until the client is
|finished with the service.
|
|Thanks,
|Matt.

Reply via email to