<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2149" name=GENERATOR></HEAD>
<BODY style="MARGIN: 4px 4px 1px; FONT: 10pt Tahoma">
<DIV>I'm not really embedding mono in my C/C++ application. Rather, I'm using mono and p/invoke to access some native code that I already have. I could add a call to mono_thread_attach() but that would mean that my native api that previously had no dependancy on mono would need to be linked to it. When the delegate gets marshalled to a fucntion pointer a bunch of native code gets generated. It seems like the call to mono_thread_attach() should be embedded somewhere in that code. </DIV>
<DIV>&nbsp;</DIV>
<DIV>I haven't had a chance yet to build my app under windows yet (that comes later)... does anyone know whether or not I will have similar problems in Windows? Do you have to do something special before calling a marshalled delegate on a different thread or does it just work?</DIV>
<DIV>&nbsp;</DIV>
<DIV>Thanks,</DIV>
<DIV>Dan<BR><BR>&gt;&gt;&gt; Zoltan Varga &lt;vargaz@gmail.com&gt; 7/20/2004 12:11:01 PM &gt;&gt;&gt;<BR></DIV>
<DIV style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hi,<BR><BR>&nbsp; The function is called mono_thread_attach (). For more info on the<BR>mono embedding<BR>interfaces:<BR><BR><A href="http://www.mono-project.com/using/embedded-api.html">http://www.mono-project.com/using/embedded-api.html</A><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Zoltan<BR><BR>----- Original Message -----<BR>From: Daniel L. Christensen &lt;dachristensen@gw.novell.com&gt;<BR>Date: Wed, 14 Jul 2004 12:03:16 -0600<BR>Subject: [Mono-devel-list] Calling C# delegate from native code on a<BR>different thread.<BR>To: mono-devel-list@lists.ximian.com<BR><BR><BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp; <BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I'm trying to wrap a native C++ API with C#. I've run into a<BR>spot where the C# object needs to register for an event that occurs on<BR>the native C++ object. So I pass down a delegate which gets converted<BR>to a function pointer on the native side, wrap the funciton pointers<BR>with an event handler object and register the event handler object<BR>with the native C++ object. Certain actions performed by the C++<BR>object happen asynchronously (i.e. on another thread that mono doesn't<BR>know about). When the action completes (or is in progress) it<BR>generates a native event. The native object calls back on the event<BR>handler which in turn tries to call back up into the C# code using the<BR>function pointer that was created from the delegate. When this happens<BR>I get the following error:<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ** ERROR **: file mini.c: line 6508 (mono_get_lmf_addr): should<BR>not be reached<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aborting...<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I imagine that the problem is that I am trying to communicate to<BR>the mono vm from a thread that is not attached to it. When attempting<BR>a similar operation in Java/JNI, you are required to attach the JVM to<BR>the native thread before trying to call up into java. Does mono have a<BR>similar convention? How is this accomplished? Or, is there a better<BR>way to accomplish this using mono?<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thanks,<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dan Christensen<BR>_______________________________________________<BR>Mono-devel-list mailing list<BR>Mono-devel-list@lists.ximian.com<BR><A href="http://lists.ximian.com/mailman/listinfo/mono-devel-list">http://lists.ximian.com/mailman/listinfo/mono-devel-list</A><BR></DIV></BODY></HTML>