Сериализуемая проблема в классе 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, и я хотел отметить ваш комментарий как ответ. Я надеваю

Другие вопросы по тегам