В программе я охватываю нить («рабочая нить»). Hera Я копирую некоторые файлы, записывая некоторые данные в базу данных и, в конечном итоге, удаляю некоторые другие файлы или каталоги. Все работает нормально. Проблема в том, что я решил переместить операцию удаления в какой-то другой поток. Таким образом, рабочий поток теперь копирует файлы или каталоги, записывает в базу данных и, если есть необходимость удалить некоторые другие файлы, этот поток охватывает другой поток, а второй поток удаляет необходимые файлы или каталоги.Доступ запрещен из другого потока
Проблема заключается в том, что удаление, используемое для работы на 100%, когда сделано в рабочем потоке, теперь, когда это делается во вторичном потоке, I иногда получает ошибку «Доступ запрещен», и файлы не могут быть удален. И нет, рабочий поток определенно НЕ присоединяется к файлам и каталогам, которые нужно удалить в данный момент.
Иногда (но не всегда) основной поток олицетворяет некоторого пользователя, поэтому при необходимости поток удаления также выполняется под олицетворением, чтобы предоставить необходимые разрешения для удаления файлов, поэтому это не должно быть проблемой.
У кого-нибудь есть ключ, почему это может произойти?
У вас есть антивирус? Это иногда мешает вам при добавлении, изменении и удалении файлов. Я, как правило, добавляю все дерево папок разработки в доверенную зону антивирусного программного обеспечения и, похоже, устраняет проблему. –
Олицетворение предназначено только для текущей темы, поэтому, если вы олицетворяете главную роль, вы не выдаете себя за свою рабочую нить. – Remko
Да, вот почему я сказал: при необходимости удаляемая нить также работает под олицетворением, т. Е. Снова олицетворяет себя. – Lobuno