Tôi muốn ghim một mảng các byte dài 10 megabyte để mã được quản lý và không được quản lý có thể hoạt động trên đó.Tôi làm cách nào để ghim một mảng byte?
Kịch bản của tôi là tôi có trình điều khiển không được quản lý đọc dữ liệu từ thiết bị và ghi nó vào mảng lớn và ứng dụng được quản lý chỉ đọc dữ liệu đó.
Something như thế này:
byte[] dataArray = new byte[10*1024*1024];
Tôi muốn ghim dataArray để GC không di chuyển nó.
Điều gì xảy ra khi tôi chạy ứng dụng, tôi nhận được một DataAbortApplication và sau khi đọc trên internet tôi phát hiện ra rằng tôi nên ghim số dataArray
để tránh lỗi này.
Tôi nên làm gì?
Check-out 'cái tuyên bố fixed' http://msdn.microsoft.com/en-us/library/f58wzh21.aspx – Tawnos
có thể trùng lặp của http://stackoverflow.com/questions/13293133/pinning- mảng-of-net-đối tượng? – LB2
@FabianBigler: bạn có nghĩa là tôi không thể chia sẻ mảng lớn giữa mã được quản lý và không được quản lý? – ShrShr