Ожидание завершения процесса - PullRequest
0 голосов
/ 20 июня 2019

У меня есть процесс, для выполнения которого требуется несколько разное время.Исходная часть кода зависит от его результатов.Процесс создает файл для печати (PRN).Далее раздел читает этот файл и возвращает его содержимое в байтах.

Когда я ставлю точку останова в операторе using, я получаю прочитать байты созданного файла и вернуть их туда, где они запрашиваются.Но когда я выполняю как обычно, я получаю сообщение об ошибке.

_ Процесс не может получить доступ к файлу 'linkToFile', поскольку он используется другим процессом _

lbl.PrintSettings.PrinterName = printerName;
byte[] fileBytes = null;

Task.Run(() => { lbl.Print(int.Parse(qty)); }).Wait(2000); 

using (var strm = File.Open(outPutPrintFile, 
                              FileMode.Open, FileAccess.Read, FileShare.Read))
{
    using (var ms = new MemoryStream())
    {
         strm.CopyTo(ms);
         fileBytes = ms.ToArray();
    }
}

return Ok(fileBytes);

Я попытался поместить часть, которая выполняется дольше, в часть Task-Wait, но все еще получаю ту же ошибку.

1 Ответ

2 голосов
/ 20 июня 2019

Попробуйте использовать Fileshare.ReadWrite вместо FileShare.Read. Это не по неизвестной причине, как вы прокомментировали, но ReadWrite убедитесь, что при открытии файла могут быть выполнены дальнейшие операции чтения / записи. Из вашего размещенного кода это выглядит как вариант выбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...