Chcę przypiąć tablicę bajtów o rozmiarze 10 megabajtów, aby zarządzany i niezarządzany kod mógł na niej działać.Jak mogę przypiąć tablicę bajtów?
Mój scenariusz jest taki, że mam niezarządzanego sterownika, który odczytuje niektóre dane z urządzenia i zapisuje je do dużej tablicy, a zarządzana aplikacja odczytuje te dane.
coś takiego:
byte[] dataArray = new byte[10*1024*1024];
chcę przypiąć DataArray tak że GC nie przesuwa go.
Co się dzieje, kiedy po prostu uruchomię aplikację, otrzymuję aplikację DataAbortApplication i po przeczytaniu w Internecie dowiedziałem się, że powinienem przypiąć dataArray
, aby uniknąć tego błędu.
Jak/co mam zrobić?
Zapoznaj się z 'fixed' oświadczenie http://msdn.microsoft.com/en-us/library/f58wzh21.aspx – Tawnos
Możliwy duplikat http://stackoverflow.com/questions/13293133/pinning- array-of-net-objects? – LB2
@FabianBigler: masz na myśli, że nie mogę udostępnić dużej tablicy między kodem zarządzanym i niezarządzanym? – ShrShr