Проблема с интеропом
От: borhes  
Дата: 19.07.10 08:36
Оценка:
Добрый день, коллеги.

Есть сишное апи, такого вида:

typedef void (__stdcall *ReadDataCallback)(void* buf);
int Init(ReadDataCallback pFunction);



По вызову Init запускается некий цикл, переодически вызывающий колбек, и отдающий в него
указатель на массив постоянного и известного мне размера.

Мне надо использовать это апи из С#, для чего я описал интероп следующий образом:

public delegate void ReadDataCallback([MarshalAs(UnmanagedType.LPArray, SizeConst=1024)] byte[] buf);

[DllImport("SomeDll.dll", EntryPoint = "Init")]
public static extern int GeoInit(ReadDataCallback callback);



Данный способ не работает вполне хорошо — в рабочем проекте быстро вываливается исключение
NullReferenceException в безымянном потоке, стек которого отладчик показать не может.
В тестовой консольной программке все хорошо.

Подозреваю, что я неправильно описал интероп.

Идеи?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.