Я сделал это для вызова неуправляемой функции из кода Си. pCallback - это указатель на функцию, поэтому на управляемой стороне находится делегат.
[DllImport("MyDLL.dll")]
public static extern Result SetCallback(
IntPtr handle,
Delegate pCallback,
CallbackType Type);
Сейчас я настраиваю
private delegate void pfnCallback(uint PromptID, ttsEventType evt, IntPtr lData);
private pfnCallback cb = new pfnCallback(cback);
public Form1()
{
(...)
Wrapper.SetCallback(handle, cb, IntPtr.Zero, CallBackType.DEFAULT);
(...)
public static void cback(uint PromptID, ttsEventType evt, IntPtr lData)
{ }
}
При отладке я вижу, что она запускает функцию cback один раз, а затем я получаю исключение без данных, просто говоря «Произошло необработанное исключение win32 в WindowsApp2.vshost.exe [4372]. Я не понимаю, что неправильно. Кто-нибудь может мне помочь?