Я создаю приложение winforms .net, у меня есть принтер E-Pos в сети, используя этот код ниже: При инициализации принтера загрузки формы:
explorer = new PosExplorer(this);
DeviceInfo receiptPrinterDevice = explorer.GetDevice("PosPrinter", Properties.Settings.Default.KitchenPrinter); //May need to change this if you don't use a logicial name or use a different one.
kitchenPrinter = (PosPrinter)explorer.CreateInstance(receiptPrinterDevice);
ConnectToPrinter();
private void ConnectToPrinter()
{
kitchenPrinter.Open();
kitchenPrinter.Claim(10000);
kitchenPrinter.DeviceEnabled = true;
}
Вызов функции на кнопке печати:
private void PrintReceipt()
{
try
{ kitchenPrinter.PrintNormal(PrinterStation.Receipt, "test");
}
finally
{
}
}
Когда я хочу переключиться на другую форму, я вызываю функцию отключения
DisconnectFromPrinter(kitchenPrinter);
Reporting frm = new Reporting(curuser);
frm.Show();
this.Hide();
private void DisconnectFromPrinter(PosPrinter kitchenPrinter)
{
try
{
kitchenPrinter.Release();
kitchenPrinter.Close();
}
catch { }
}
Один раз печатается успешно, при следующем нажатии на печать выдается исключение
Метод ClaimDevice выдает исключение. Была предпринята попытка выполнить недопустимую или неподдерживаемую операцию с устройством, либо было использовано недопустимое значение параметра.
любое предложение ?
DeviceEnabled = false
? связанные: stackoverflow.com/questions/22430995/cant-claim-the- постпринтер; doc social.msdn.microsoft.com/Forums/en-US/ (устройства могут быть общими) - person Cee McSharpface   schedule 03.03.2017Release
недействителен... нет информации об успешности операции. зависание = исключение, упомянутое в вашем посте? не могли бы вы обновить код, чтобы мы увидели общую картину, включая взаимодействие формы/кнопки? - person Cee McSharpface   schedule 03.03.2017ConnectToPrinter
вызывается послеDisconnectFromPrinter
и перед последующимиPrintReceipt
- person Cee McSharpface   schedule 03.03.2017