Raise event from library worker thread.

J

Johan

Hi!

I am writing a library in managed C++ for the .NET framework. I have
problems fireing events from a worker thread. The managed event must
be raised from the main thread, but I cannot find any way to pass
control from the worker thread to the main thread.

In the COM programming model the problem was solved by creating an
invisible window which the worker thread passed win32 messages to.
With what is that paradigm replaced in .NET?

I have found some solutions that involves the Control.Invoke method.
This approach works if you got access to the clients Form handle, but
since I am writing a library (and not a control) I don't now how to
get that. Instead I get this error message if a I let my class inherit
from Control and then call Invoke()

"An unhandled exception of type 'System.InvalidOperationException'
occurred in system.windows.forms.dll

Additional information: Cannot call Invoke or InvokeAsync on a control
until the window handle has been created."

Do anyone have the solution of how to raise events from a .NET
library's worker thread? I would be more than pleased if I anyone gave
me some key information!

Regards,
John
 
A

Alex Feinman [MVP]

You can use MessageWindow class in a same way you used hidden window in COM
 
J

Johan

Thanks for your answer, but as I understand it MessageWindow is only
implemented in the Compact Framework and not the desktop framework. At
least the docs say so, and the postings from Microsoft staf in those
groups say so.

Any solution for .NET Desktop Framework?

Regards,
John
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top