Удаление файла при задействовании его в 2-х проектах

shtift

Client
Регистрация
29.07.2015
Сообщения
148
Благодарностей
290
Баллы
63
Привет всем.
Создаю в первом проекте файл и через определенное время, во втором проекте проверяю, что файл был создан и после некоторых манипуляций с данными из файла, удаляю этот файл.
При попытке удалить файл проект завершается и выводится сообщение "Не удается получить доступ к файлу, т.к. файл занят другим процессом". По коду ошибки ругается именно на удаление файла.
Я сделал вывод, что эта проблема возникает из-за того, что одновременно два проекта работают с одним и тем же файлом.
Если это верно, то как сделать так, чтобы первый проект "забыл" про файл и продолжал работать, дабы второй проект мог легко удалить файл?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 803
Благодарностей
8 865
Баллы
113
Привет всем.
Создаю в первом проекте файл и через определенное время, во втором проекте проверяю, что файл был создан и после некоторых манипуляций с данными из файла, удаляю этот файл.
При попытке удалить файл проект завершается и выводится сообщение "Не удается получить доступ к файлу, т.к. файл занят другим процессом". По коду ошибки ругается именно на удаление файла.
Я сделал вывод, что эта проблема возникает из-за того, что одновременно два проекта работают с одним и тем же файлом.
Если это верно, то как сделать так, чтобы первый проект "забыл" про файл и продолжал работать, дабы второй проект мог легко удалить файл?
файл не привязан к списку в первом или втором проекте?
 

shtift

Client
Регистрация
29.07.2015
Сообщения
148
Благодарностей
290
Баллы
63

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
788
Баллы
113
Код:
var path = @"D:\downloads\1.txt"; //путь к файлу
var timeout = 10; //секунд

if(!File.Exists(path)){
    project.SendInfoToLog("файл "+path+" не существует");
    return "ok";
}

while(timeout-- > 0){
    try{
        File.Delete(path);
    }catch (IOException e){
        var errorcode = System.Runtime.InteropServices.Marshal.GetHRForException(e) & ((1 << 16) - 1);
        var message = e.Message;
        if(errorcode == 32 || errorcode == 33){
            project.SendWarningToLog("файл "+path+" заблокирован");
            new System.Threading.ManualResetEvent(false).WaitOne(1000);
            continue;
        }
       throw e;
    }
    return "ok";
}

if(timeout <= 0 && File.Exists(path))
    throw new Exception("не удалось удалить файл");
должен признаться, что этот способ очень корявый или лучше сказать наивный. если не понятно почему, то просто пердставьте что этот код ждет секунду и тут же пытается удалить хотя файла может и не быть уже или он обновлен или он как раз только что освободился или другой проект уже начал писать а вы его удалить хотите. Короче на свой страх и риск.
 
Последнее редактирование:

shtift

Client
Регистрация
29.07.2015
Сообщения
148
Благодарностей
290
Баллы
63
Нельзя задействовать такой алгоритм, т.к. мне нужно чтобы задержек по времени не было. Тем более, что после принудительной остановки проекта (первого) файл все еще не удаляется в течение 0:30 - 1 мин, даже простым перемещением в корзину. Выходит, что CaptchaSaver зачем-то "держит" файл, хотя в дальнейшем не контактирует с ним.

Либо проблема может быть еще вот в чем. Во втором проекте этот файл отправляется на сервер, после отправки управление передается первому проекту и он уже пытается удалить файл. Возможно второй проект блокирует? Вот код, отправляющий файл:
Код:
var image = System.Drawing.Image.FromFile(@"C:\Files\1.jpg");

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("Anti-Captcha.dll", base64String, "");

var split = result.Split(new [] {"-|-"}, StringSplitOptions.RemoveEmptyEntries);
if (split.Length == 2) return split[0];
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
788
Баллы
113
зачем так извращаться? отправляйте капчу там же где ее получили. При том вобще не обязательно хранить капчу в файле, производите распозновоание в стандартном экшене.
 

shtift

Client
Регистрация
29.07.2015
Сообщения
148
Благодарностей
290
Баллы
63
зачем так извращаться? отправляйте капчу там же где ее получили. При том вобще не обязательно хранить капчу в файле, производите распозновоание в стандартном экшене.
Согласен, но нужно чтобы, пока капча отправляется, в это время выполнялись другие манипуляции. А т.к. нельзя параллельно выполнять в одном проекте 2 действия, отсюда и делаю 2 проекта - один работает по своему плану, второй в это время отправляет картинку стандартным экшеном.

Делаю через файлы, т.к. капча получается в base64, а декодировать ее не выходит. Может тогда подскажете как декодировать? Или можно сразу в таком виде отправлять?

Вот в таком виде приходит:
HTML:
<div style="background-image: url(&quot;data:image/jpeg;base64,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&quot;);" id="captchaimg" class="image"></div>
 

shtift

Client
Регистрация
29.07.2015
Сообщения
148
Благодарностей
290
Баллы
63
Вроде разобрался. Парсю регуляркой строку и кладу в переменную gBase64String. Отправляю на разгадывание:
Код:
var result = ZennoPoster.CaptchaRecognition("Anti-Captcha.dll", gBase64String, "");
var split = result.Split(new [] {"-|-"}, StringSplitOptions.RemoveEmptyEntries);
if (split.Length == 2) return split[0];
Подскажите, все верно? Возможно код содержит ошибки.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
788
Баллы
113
можно попробовать хранить b64 строки капч в привязаном списк/таблице, но я точно не знаю как они будут согласовываться между проектами.

формат списка будет айди капчи разделитель b64 разделитель ответ. Если ненравится хранить строку картинки в списке, можно просто хранить ее в файле без каких либо перекодировок как обычный текст, а в таблице просто хранить путь к капче.
также нужно сделать так чтобы айди капчи (название файла) не пересекались.
при добавлении в список я думаю лочить не нужно
после того как главный шаблон выполнит все нужные действия, нужно будет остановится и поискать в списке свою капчу с ответом. Если ошибка - разгадывать уже в шаблоне. Если ответ пустой - ждать пока прийдет ответ. Здесь прийдется лочить список при удалении.

шаблон-разгадыватель должен работать в несколько (столько же сколько других проектов его используют) потоков, потому что если меньше то будет задержка и время выиграть неудастся. Так же нужно предусмотреть чтобы после рагадывания этот шаблон не удалял из списка разгаданую капчу, потому что не знает взял ли соответсвующий проект ответ или еще нет. Файл можно будет удалить сразу же после первого разгадывания. Здесь список нужно редактировать поэтому список нужно лочить.


Вобще я писал на форуме что можно разгадывать капчу и даже уже сделал и протестировал универсальный снипет. Его плюс в том что он полностю независим от других шаблонов, не сохраняет левых файлов и не делает лишних перекодировок, абсолютно универсальный, может использовать любые доступные в зенопостере модули разгадывания капчи, не использует поток зенопостера и может работать даже в демке (не тестил но предполагаю). Так же по желанию может быть предусмотрена возможность сжимания картинки до минимально приемлемого размера. Большой минус в том что он сделан только для продажи.
ps
лучше так
var result = split[0];
if (split.Length >1) result = split[1];
return result;
 
Последнее редактирование:
  • Спасибо
Реакции: shtift

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