Bonjour,
Merci de m'aider.

Comment corriger l'exception ci-dessous ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Managed Debugging Assistant 'CallbackOnCollectedDelegate' 
  Message=Managed Debugging Assistant 'CallbackOnCollectedDelegate' : 'Un rappel a été effectué sur un délégué récupéré par le garbage collector de type 'EglCube!EglCube.e3d+Tdelegate_callback_OnCapture::Invoke'. Cela peut entraîner un arrêt brutal de l'application, des dysfonctionnements et des pertes de données. Lors du passage de délégués à du code non managé, ils doivent être maintenus actifs par l'application managée jusqu'à ce qu'il soit garanti qu'ils ne seront jamais appelés.'

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
        delegate int Tdelegate_callback_OnDraw3d(IntPtr param);
        delegate int Tdelegate_callback_OnCapture(IntPtr param, bool clicked,IntPtr v);
        static Tdelegate_e3d_Init delegate_e3d_Init;
 
        internal static int e3d_Init(byte[] vertexsource, byte[] fragmentsource, IntPtr param, Func<IntPtr,int> draw3d, Func<IntPtr,bool,pvect?,int> hint)
        {
            Tdelegate_callback_OnDraw3d ddraw3d = new Tdelegate_callback_OnDraw3d((o) =>
            {
                return draw3d(o); //appel toujours code manager
            }
            );
 
 
            Tdelegate_callback_OnCapture dcapture = new Tdelegate_callback_OnCapture((o,a, b) =>
            {
                pvect? v = null;
                if (b!=IntPtr.Zero)
                    v=(pvect)Marshal.PtrToStructure(b, typeof(pvect));
                return hint(o,a, v); //appel toujours code manager
            }
            );
 
            IntPtr ptrdraw3d = Marshal.GetFunctionPointerForDelegate(ddraw3d);
            IntPtr ptrhint = Marshal.GetFunctionPointerForDelegate(dcapture);
 
            return delegate_e3d_Init(vertexsource, fragmentsource, param, ptrdraw3d, ptrhint); //appel code non managé
        }
J'appelle le code non manager 'delegate_e3d_Init' mais ca n'a rien a voir

Merci beaucoup.