|
Почему УдалитьФайлы ошибка после закрытия ЧтениеТекста? | ☑ | ||
---|---|---|---|---|
0
Garykom
01.08.24
✎
17:27
|
// ... ИмяФайлаШтрихкода = ПолучитьИмяВременногоФайла("txt"); // ... ЧтениеТекста = Новый ЧтениеТекста(); Текст = Новый ЧтениеТекста(ИмяФайлаШтрихкода, КодировкаТекста.UTF8); Штрихкод = СокрЛП(Текст.Прочитать()); ЧтениеТекста.Закрыть(); ЧтениеТекста = Неопределено; Попытка УдалитьФайлы(ИмяФайлаШтрихкода); Исключение КонецПопытки; // ... Ошибка при вызове метода контекста (УдалитьФайлы)
по причине: Ошибка удаления файлов по причине: Ошибка совместного доступа к файлу 'C:\Users\...\Temp\v8_95E8_33.txt'. 32(0x00000020): The process cannot access the file because it is being used by another process. |
|||
1
Волшебник
01.08.24
✎
17:26
|
Вам же всё по-английски написали: файл занят
|
|||
2
Garykom
01.08.24
✎
17:28
|
(1) Как узнать чем?
Какой то антивирус блокирует или что? |
|||
3
YFedor
01.08.24
✎
17:30
|
(0), (1) Я полагаю, что 1с же не мгновенно освобождает файл
|
|||
4
Garykom
01.08.24
✎
17:29
|
Внешнее приложение которое создает файл к этому моменту уже закрылось после ЗапуститьПриложение()
|
|||
5
Garykom
01.08.24
✎
17:30
|
(3) Эмм. Но как бы встроенные вызовы платформы.
Даже ЧтениеТекста = Неопределено;сделал Предлагается еще добавить паузу? |
|||
6
Garykom
01.08.24
✎
17:32
|
(3) Может есть какой то метод для "освобождает файл" ?
|
|||
7
YFedor
01.08.24
✎
17:34
|
ЧтениеТекста.Закрыть();
ЧтениеТекста = Неопределено; оно освобождает файл, но не мгновенно же. Т.е. если ты этот файл открыл, например блокнотом, потом закрыл, потом спозиционировался на нем в проводнике, нажал Дел - он удалился. Но после закрытия на позиционирование на файле и нажатие кнопки ушли какие-то милисекунды достаточные для того, чтобы файл освободился. Я думаю так. |
|||
8
Garykom
01.08.24
✎
17:35
|
(7) Какой выход?
|
|||
9
H A D G E H O G s
01.08.24
✎
17:38
|
(8) фоновое задание с паузой
|
|||
10
H A D G E H O G s
01.08.24
✎
17:48
|
(7) все обычные яп используют closeHandle() при освобождении файловых ресурсов Windows и после этого файл можно удалять хоть откуда. 1С тоже вызовет closeHandle() но уже после возврата управления из прикладного кода.
Конечно, можно подожать через вызов SleepEx(100, true), в надежде, что причина такого поведения 1С в асинхронном вызове WriteFileEx() без ожидания завершения но думаю, не не поможет. |
|||
11
Hans
01.08.24
✎
18:06
|
У тебя переменная Текст разве не осталась в памяти?
|
|||
12
Garykom
01.08.24
✎
18:09
|
(11) мдя ну офигеть я скосячил по невнимательности
сенкс |
|||
13
Hans
01.08.24
✎
18:09
|
Текст.Закрыть();
Текст = Неопределено; |
|||
14
Garykom
01.08.24
✎
18:10
|
(13) угу скопипащено было из другого места
|
|||
15
Garykom
01.08.24
✎
18:14
|
исправил
ЧтениеТекста = Новый ЧтениеТекста(ИмяФайлаШтрихкода, КодировкаТекста.UTF8); Штрихкод = СокрЛП(ЧтениеТекста.Прочитать()); ЧтениеТекста.Закрыть(); ЧтениеТекста = Неопределено; все ок стало |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |