我探索了内存映射文件 (MMF),这是我到目前为止所做的,只是按照 MSDN http://msdn.microsoft.com/en-us/library/dd997372.aspx上的示例
class MMF {
private long offset = 0x10000000; // 256 megabytes
private long length = 0x20000000; // 512 megabytes
public MMF() {
using (var mmf = MemoryMappedFile.CreateFromFile(@"c:\NFS", FileMode.Open, "NMAP")) {
using (var accessor = mmf.CreateViewAccessor(offset, length)) {
int fsSize = Marshal.SizeOf(typeof(FS));
FS nfs;
// Make changes to the view.
for (long i = 0; i < length; i += fsSize) {
accessor.Read(i, out nfs);
accessor.Write(i, ref nfs);
其中 FS 只是另一个类对象的数组
public class FS {
public NFS[] files;
}
但我收到错误:
类型“NEN_Server.FS.FS”必须是不可为空的值类型,才能将其用作泛型类型或方法“System.IO.UnmanagedMemoryAccessor.Read(long, out T)”中的参数“T”
我究竟做错了什么?我的类必须是不可为空的还是应该以其他方式使用访问器?
谢谢你