Зеннопостер блокирует файлы

Rk61

Client
Регистрация
03.02.2015
Сообщения
114
Благодарностей
125
Баллы
43
Капча сохраняется на диск в рандомную папку (сохраняется с расширением php),
Меняется формат на png (перемещением с новым именем)
оттуда отправляется через c# на антикапчу
Далее идёт экшен удаления файла и папки, НО!!!! Зенка не удаляет ни файл, ни папку.

При попытке удалить вручную - пишет что файл занят зенкой.

При прогоне через ПМ проблем нет, только запускаю в зенке - сразу начинает плодить сотни, тысячи файлов и папок, которые можно удалить только после убийства зенки.

Как можно решить мою проблему?

p.s. с# макрос которым отправляю на антикапчу


Код:
var captcha__get = project.Variables["html"].Value+".PNG";
var image = System.Drawing.Image.FromFile(@captcha__get);
string base64String = String.Empty;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
    image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    byte[] imageBytes = ms.ToArray();
    base64String = Convert.ToBase64String(imageBytes);
}
var result = ZennoPoster.CaptchaRecognition(project.Variables["captсha_service"].Value, base64String, "");
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
return result;
В переменной html путь до файла капчи *.php
В переменной captсha_service - дллка сервиса капчи.

Капчи гадает, но не удаляет.
 

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
487
Благодарностей
148
Баллы
43
какая винда , на какой диск пишеш и какая версия зенно ?:-)
 

Rk61

Client
Регистрация
03.02.2015
Сообщения
114
Благодарностей
125
Баллы
43
винда 7 макс х64. Зенно про 5980. диск ссд, проблем с ним ниразу не было.
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
796
Баллы
113
аналогично у меня было на вин7 х86-64 5.7.5.3
 

Rk61

Client
Регистрация
03.02.2015
Сообщения
114
Благодарностей
125
Баллы
43
Ответьте пожалуйста, как побороть, клиент ждёт готовый шаблон, а шаблон оставляет за собой гору мусора.
Возможно прямая отправка на сервис антикапчи без использования модулей зенки и решила бы это проблему, но каждый клиент хочет разные сервисы юзать, а делать костыль под все сервисы - глупая трата времени.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
using(var image = System.Drawing.Image.FromFile(@captcha__get)){
string base64String = String.Empty;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] imageBytes = ms.ToArray();
base64String = Convert.ToBase64String(imageBytes);
}
var result = ZennoPoster.CaptchaRecognition(project.Variables["captсha_service"].Value, base64String, "");
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
return result;
}


Нужно заворачивать в using. Картинки надо всегда диспозить, иначе они жрут память и блокируют файлы
Конструкция с using дает гарантию, что image.Dispose() будет вызван даже если произойдет исключение.

Конвертировать и менять расширение файла тоже не нужно. Можно и php отправлять. Все равно же картинкой будет.

Перенес из Багов в Вопросы, так как это просто ошибка кода.
 
  • Спасибо
Реакции: Azzar и Rk61

Rk61

Client
Регистрация
03.02.2015
Сообщения
114
Благодарностей
125
Баллы
43
Спасибо, понял куда копать, проблему решил.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)