Сериализуемая проблема в классе PrintDocument
Я использую программное обеспечение под названием Laserfiche. У этого есть сервер рабочего процесса и SDK, который позволяет вам использовать ваши собственные пользовательские действия. Существует требование при создании пользовательского действия. Это должно быть сериализовано. Поэтому я наделил свойство [Serializable] всем классам. Проблема заключается в том, когда я использую класс System.Drawing.Printing.PrintDocument. Я получил:
09.02.2013 13:07:12 v9SignoffAuthentication Тип 'System.Drawing.Printing.PrintDocument' в сборке 'System.Drawing, версия =4.0.0.0, Culture= нейтральный, PublicKeyToken=b03f5f7f11d50a3a' не помечен как сериализуемый.
Я немного погуглил и обнаружил, что PrintDocument нельзя сериализовать. Я добавляю собственность
[NonSerialized]
PrintDocument pd;
И пользовательская активность запускается, но не полностью. Я получаю исключение на
pd.Print();
Это внутри метода переопределения
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
Ошибка
System.NullReferenceException: ссылка на объект не установлена на экземпляр объекта. на WFPrintCustomActivity.WFPrintCustomActivity.Execute(ActivityExecutionContext executeContext)||02/09/2013 13:15:38
Если я отмечу объект как NonSerialized, я не могу вызвать один из этих методов позже?
Есть идеи?
Спасибо
Gianfranco
1 ответ
Спасибо Ганс Пассант, Это был ответ. Я инициализировал pd внутри
Public WFPrintCustomActivity()
{
InitializeComponent();
settings = new Settings();
//Logs("STARTED");
pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
}
Я прокомментировал эти 2 строки
pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
И инициализируй pd внутри
защищенное переопределение ActivityExecutionStatus Execute(ActivityExecutionContext executeContext)
Который запускается первым. Сейчас работает.
Это первый раз, когда я спрашиваю что-то о stackru, и я хотел отметить ваш комментарий как ответ. Я надеваю