xpnet icon indicating copy to clipboard operation
xpnet copied to clipboard

crash in cmd.InvokeOnce()....where is my error? RESOLVED

Open allucche opened this issue 4 years ago • 1 comments

In My class i define:

private IXPlaneApi m_api = null;

In the constructor: public xPlaneSerialCom(IXPlaneApi api) { m_api = api; ...... }

When I send cmnd to xPlane in this function the system crashes:

private void SendCMND(string cmndString,int actionInt) { IXPCommand cmd = null; cmd = m_api.Commands.GetCommand(cmndString);

    switch (actionInt)
     {
            case BEGIN:
                cmd.Begin();
                break;
            case END:
                cmd.End();
                break;
            case ONCE:
                cmd.InvokeOnce();
                break;
      }

}

Where is my error? Thank you very much! Alessio

allucche avatar Mar 31 '20 11:03 allucche

I solved: https://github.com/xpnteam/xpnet/issues/23: X-Plane must only be called from the thread that it creates the Plugin on. Trying to read datarefs or make other calls back into X-Plane from other threads might crash the sim and might give you invalid data values, just as you're seeing. To do a timer, you have to let X-Plane do it for you. In XPNet you can do that with IXPlaneApi.Processing.RegisterFlightLoopHook().

Thanks

allucche avatar Apr 03 '20 12:04 allucche