Я делаю приложение для сбора данных в C#, которое вызывает DLL (поставляется поставщиком DAQ-карты), и для этого требуется, чтобы я регистрировал свои буферы ввода-вывода в этой DLL. У меня есть поток писем, который заполняет буфер образцами. Я вижу странное поведение, что через некоторое время выходной сигнал становится шумным, и я подозреваю, что это потому, что GC куда-то перемещает мои буферы, поэтому код в DLL имеет указатель на неправильный адрес и выводит мусор на ЦАП.C# unmovable динамически распределенные массивы
1) Как я могу проверить, прав ли я (массив перемещен)?
2) Если да, то как сделать массив неотмеченным? На странице Fixed Size Buffers в MSDN говорится, что я могу сделать буфер фиксированного размера, но мне нужно, чтобы он динамически распределялся (поэтому его можно настроить до начала загрузки).
[ 'Marshal.AllocHGlobal'] (http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.allochglobal.aspx) может помочь здесь. –
http://www.codeproject.com/Articles/17610/Pinned-Object – I4V