<html>
  <head>
    <style type="text/css">
      <!--
        body { margin-bottom: 1px; margin-right: 4px; line-height: normal; font-variant: normal; margin-top: 4px; margin-left: 4px }
      -->
    </style>
    
  </head>
  <body>
    <DIV>
      I&#39;m trying to wrap a native C&#43;&#43; API with C&#35;. I&#39;ve run into a spot where the C&#35; object needs to register for an event that occurs on the native C&#43;&#43; object. So I pass down a delegate which gets converted to a function pointer on the native side&#44; wrap the funciton pointers with an event handler object and register the event handler object with the native C&#43;&#43; object. Certain actions performed by the C&#43;&#43; object happen asynchronously &#40;i.e. on another thread that mono doesn&#39;t know about&#41;. When the action completes &#40;or is in progress&#41; it generates a native event. The native object calls back on the event handler which in turn tries to call back up into the C&#35; code using the function pointer that was created from the delegate. When this happens I get the following error:
    </DIV>
    <DIV>&nbsp;</DIV>
    <DIV>
      &#42;&#42; ERROR &#42;&#42;: file mini.c: line 6508 &#40;mono_get_lmf_addr&#41;: should not be reached
    </DIV>
    <DIV>
      aborting...
    </DIV>
    <DIV>&nbsp;</DIV>
    <DIV>
      I imagine that the problem is that I am trying to communicate to the mono vm from a thread that is not attached to it. When attempting a similar operation in Java/JNI&#44; you are required to attach the JVM to the native thread before trying to call up into java. Does mono have a similar convention&#63; How is this accomplished&#63; Or&#44; is there a better way to accomplish this using mono&#63;
    </DIV>
    <DIV>&nbsp;</DIV>
    <DIV>
      Thanks&#44;
    </DIV>
    <DIV>
      Dan Christensen
    </DIV>
  </body>
</html>