Witam.
Mam odwieczny problem z zapisem/wydrukiem plików, które są używane przez inny proces... Pobieram etykietę z Inpostu poprzez ich API. Dostaje zwrotkę w postaci byte[]
i zapisuje to do pliku, aby wydrukować na drukarce etykiet.
var response = INPOST.GetEtykietaPaczkomatByID(item.id);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
File.WriteAllBytes(AppDomain.CurrentDomain.BaseDirectory + $"etykiety\\{fileName}", response.RawBytes);
//DevExpressem drukuje plik na drukarce etykiet
PdfPrinterSettings ps = new PdfPrinterSettings();
ps.Settings.PrinterName = c.DrukarkaEtykiet;
ps.PageOrientation = PdfPrintPageOrientation.Portrait;
PdfDocumentProcessor pdfDocumentProcessor = new PdfDocumentProcessor();
pdfDocumentProcessor.LoadDocument(AppDomain.CurrentDomain.BaseDirectory + $"etykiety\\{fileName}");
pdfDocumentProcessor.Print(ps);
}
Czasem przejdzie, a czasem nie. Nie ma na to reguły. Czy chodzi o próbę wydrukowania pliku, który jeszcze nie został zapisany? Próbowałem dorzucić Thread.Sleep(1000)
, ale zachowuje się identycznie tak samo - raz przejdzie, a raz nie.