Нет, вы не можете использовать оба private
a protected
вместе. Ваш урок странный. То, что у вас есть, называется так называемым пакетом private или in ot6. Это доступ по умолчанию, который активируется, если не указано явно спецификатор acc6.
Другие процессы должны указать FileShare.Delete
, когда они открывают файл DeleteOnClose
из MSDN CreateFile docs:
"
blockquote>FILE_FLAG_DELETE_ON_CLOSE
... Последующие открытые запросы на отказ файла, если не указан режим совместного доступаFILE_SHARE_DELETE
."
Переключиться на Linux scnr
Хорошо, серьезно сейчас: это недостаток операционной системы Windows, который не может быть действительно обработан. Каждая программа, открывающая файл, должна согласовывать другие программы, открывающие файл в одно и то же время. Это была проблема, которую я получил много лет назад, когда я все еще использовал Windows. Недостаточно открыть файл и сказать: пусть кто-нибудь еще откроет это. Остальные должны также открыть этот файл, даже если он уже открыт.
В Linux, наоборот, операционная система не позволяет блокировать какие-либо файлы, как Windows вообще. Здесь, если какой-либо файл используется более чем одной программой одновременно, сами программы должны убедиться, что одновременный доступ блокируется. Кроме того, в Linux мы можем просто создать файл, убедиться, что другой процесс запущен и открыт файл, а затем просто удалить файл (пока он открыт). Имя файла затем немедленно удаляется из файловой системы, но файл по-прежнему поддерживается драйвером файловой системы до тех пор, пока последняя ссылка (включая открытые дескрипторы файлов) не будет удалена.
Вернемся к вашей проблеме: поскольку все это не работает в Windows, вы могли бы сделать еще два подхода:
С уважением, Bodo
Проверьте это:
Вам нужно убедиться, что все процессы открывают файл с помощью FileShare.ReadWrite и FileShare.Delete.
Даже если создатель открывается с помощью share-readwrite , если вторая программа пытается открыть с помощью общего чтения, вторая программа в основном говорит, что никто другой не может писать. Но первая программа уже имеет эту мощность, поэтому второй открытый сбой.
Я хочу создать файл с флагом FileOptions.DeleteOnClose во временной папке.
Я закрываю свой дескриптор, и как только другой процесс закрывает дескриптор во временный файл, файл удаляется операционной системой.
blockquote>Пожалуйста, уточните. Как этот файл удаляется ОС. Если вы хотите удалить его по коду. Почему бы не сохранить поток. Затем вы можете открыть его с помощью Process.Start