Файл C#. Удалите, файл, используемый другим процессом

Когда устройство запускается, не все API готовы к использованию с самого начала, поскольку они загружаются асинхронно. В связи с этим WinCE предлагает функцию isApiReady: https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms885686%28v%3dmsdn.10%29

При запуске устройства оно загружает драйверы, службы и, наконец, оболочку в соответствии с порядком раздела реестра init. Ваш код, вероятно, использует API, который еще не загружен и поэтому не работает.

Пример использования isApiReady можно найти по адресу https://github.com/hjgode/RAC_switch/blob/master/RAC_switch/WinAPIReady.cs

.

5
задан Mr Lister 4 May 2012 в 11:20
поделиться

8 ответов

your process is the one that uses file , you need to set image to null use something like this :

using(var img = Image.FromFile(foto.SPath).GetThumbnailImage(GetWitdth(photo.SPath, GetHeight(photo.SPath, 150)), GetfHeight(photo.SPath, 150), null, new IntPtr()))
  pctrbFoto.Image = img;
2
ответ дан 18 December 2019 в 10:48
поделиться

where you are getting the thumbnail use:

using(Image img = Image.FromFile(foto.SPath))
{
  pctrbPhoto. Image = img.GetThumbnailImage(
  GetWitdth(photo.SPath, GetHeight(photo.SPath, 150)), 
  GetfHeight(photo.SPath, 150), null, new IntPtr()); 
}

instead to ensure that the source image is disposed (closed) when you are finished with it.

They way you have it, the image that is loaded from the file sticks around until the garbage collector decides to release it, which might be some time.

Images loaded with FromFile hold the file that they were loaded from open.

3
ответ дан 18 December 2019 в 10:48
поделиться

Первая область, которую я бы посмотрел, - это ваш метод GetPhoto. У вас есть StreamReader, который не был закрыт? Убедитесь, что если вы выполняете какие-либо операции ввода-вывода для файла перед удалением, сначала закройте эти подключения. Что делает метод GetPhoto ()?

6
ответ дан 18 December 2019 в 10:48
поделиться

Сначала вам нужно определить, является ли вашим приложением или другим приложением, у которого открыт файл.

Вы можете использовать Process Explorer от Mark Russinovich, чтобы увидеть, какая программа имеет определенный файл или каталог, открытый. Это часть линейки отличных утилит Windows Sysinternals, которую должен использовать (или, по крайней мере, знать) каждый программист / ИТ-специалист.

Вы можете получить его здесь: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

3
ответ дан 18 December 2019 в 10:48
поделиться

Когда ничего не помогает, вы можете использовать MoveFileEx для удаления файла при следующей перезагрузке.

1
ответ дан 18 December 2019 в 10:48
поделиться

Когда вы вызываете Image.FromFile в comboBox3_SelectedIndexChanged , а также, возможно, в другом месте, вы не утилизируете Image объект. Поэтому ваша программа поддерживает использование файла.

Вам необходимо утилизировать изображение каждый раз, когда вы его открываете.

2
ответ дан 18 December 2019 в 10:48
поделиться

Вы можете использовать программу Unlocker, чтобы сообщить вам, какие программы заблокировали файл

Примечание: Удалена ссылка на программу Unlocker - содержит вредоносное ПО.

0
ответ дан 18 December 2019 в 10:48
поделиться

... но если ваше приложение работает на тарифном плане веб-хостинга? Вы не можете запускать какое-либо программное обеспечение на общем сервере.

Я пробовал использовать dispose () и другие параметры, но я не могу удалить такие файлы, как Vinzcent.

Maldito IIS: @

0
ответ дан 18 December 2019 в 10:48
поделиться
Другие вопросы по тегам:

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