Печать из под C# Как дождаться завершения.

Автор SergiySH, 14 января 2014, 14:06

0 Пользователи и 1 гость просматривают эту тему.

SergiySH

Проблема в том,  что отправив документ на печать нужно дождаться завершения печати и закрыть приложение.
Нашел решение здесь http://www.oooforum.org/forum/viewtopic.phtml?t=33537
Но как оказалось решение годится только для локального принтера.
на сетевом вылетает с ошибкой.

System.ArgumentException was unhandled
 HResult=-2147024809
 Message=Нельзя передать GCHandle из одного домена AppDomain в другой.
Имя параметра: handle
 Source=mscorlib
 ParamName=handle
 StackTrace:
      в System.Runtime.InteropServices.GCHandle.InternalCheckDomain(IntPtr handle)
      в System.Runtime.InteropServices.GCHandle.FromIntPtr(IntPtr value)
      в System.Runtime.InteropServices.GCHandle.op_Explicit(IntPtr value)
      в gcroot<cli::array<int >^>..P$01AH(gcroot<cli::array<int >^>* )
      в ?getMethodInfo@CliProxy@cli_uno@@$$FQAMP$AAVMethodInfo@Reflection@System@@HABVOUString@rtl@@W4MethodKind@12@@Z(CliProxy* , Int32 nUnoFunctionPos, OUString* usMethodName, Int32 mk)
      в cli_proxy_dispatch(_uno_Interface* pUnoI, _typelib_TypeDescription* member_td, Void* uno_ret, Void** uno_args, _uno_Any** uno_exc)
 InnerException:

Что делать пока не знаю.



SergiySH

Все оказалось очень просто надо всего лишь добавить параметр
 
List<PropertyValue> printOps = new List<PropertyValue>();
PropertyValue pv5 = new PropertyValue();
pv5.Name = "Wait";
pv5.Value = new uno.Any(true);
printOps.Add(pv5);
xPrintable.print(printOps.ToArray());

к сожалению примеров для работы пока не очень много.