UnauthorizedAccessException на MemoryMappedFile в C# 4

Компилятор может создать таблицы переходов когда это применимо. Например, при использовании отражателя для рассмотрения произведенного кода, Вы будете видеть, что для огромных переключателей на строках, компилятор на самом деле генерирует код, который использует хэш-таблицу для диспетчеризации их. Хэш-таблица использует строки в качестве ключей и делегатов в case коды как значения.

Это имеет асимптотическое лучшее время выполнения, чем много цепочечных if тесты и на самом деле быстрее даже для относительно немногих строк.

12
задан Kevin Nisbet 3 August 2009 в 06:41
поделиться

3 ответа

Трудно сказать, что может пойти не так. Поскольку на веб-сайте MSDN еще нет документации, лучше всего установить FILEMON из SysInternals и посмотреть, почему это происходит.

Как вариант, вы можете подключить к процессу собственный отладчик (например, WinDBG) и поставить точку останова на MapViewOfFile и других перегрузках. А потом узнайте, почему этот вызов не работает.

1
ответ дан 2 December 2019 в 05:15
поделиться

Использование .CreateViewStream () из экземпляра MemoryMappedFile удалило ошибку из моего кода. Мне не удалось заставить .CreateViewAcccessor () работать с ошибкой отказа в доступе

1
ответ дан 2 December 2019 в 05:15
поделиться

Я знаю, что это старый вопрос, но я столкнулся с той же ошибкой и смог ее решить.

Несмотря на то, что я, как и вы, открывал MemoryMappedFile как доступный только для чтения (MemoryMappedFileRights.Read), мне также нужно было создать средство доступа только для чтения:

var view = mmf.CreateViewAccessor(offset, size, MemoryMappedFileAccess.Read);

Затем это сработало. Надеюсь, это поможет кому-то другому.

19
ответ дан 2 December 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: