Bewerken

Delen via


XpsDocumentWriter.WritingCompleted Event

Definition

Occurs when a write operation finishes.

public:
 override event System::Windows::Documents::Serialization::WritingCompletedEventHandler ^ WritingCompleted;
public override event System.Windows.Documents.Serialization.WritingCompletedEventHandler WritingCompleted;
member this.WritingCompleted : System.Windows.Documents.Serialization.WritingCompletedEventHandler 
Public Overrides Custom Event WritingCompleted As WritingCompletedEventHandler 

Event Type

Examples

The following example shows how to use the WritingCompleted event.

private void SaveMultipleFixedContentDocumentsAsync(
             XpsDocumentWriter xpsdw, FixedDocumentSequence fds)
{
    _xpsdwActive = xpsdw;

    xpsdw.WritingCompleted +=
        new WritingCompletedEventHandler(AsyncSaveCompleted);

    xpsdw.WritingProgressChanged +=
        new WritingProgressChangedEventHandler(AsyncSavingProgress);

    // Write the FixedDocumentSequence as a
    // collection of documents asynchronously.
    xpsdw.WriteAsync(fds);
}

// Cancel an async operation
public void CancelAsync()
{
    _xpsdwActive.CancelAsync();
}
#endregion // Asynchronous Save Methods

#region Async Event Handlers
//
// Create an "async operation complete" event handler
// for saving a FixedDocumentSequence
//
private void AsyncSaveCompleted(
             object sender, WritingCompletedEventArgs e)
{
    string result;
    if (e.Cancelled)          result = "Canceled";
    else if (e.Error != null) result = "Error";
    else                      result = "Asynchronous operation Completed";

    // Close the pakcage
    _xpsDocument.Close();

    if (OnAsyncSaveChange != null)
    {
        AsyncSaveEventArgs asyncInfo =
            new AsyncSaveEventArgs(result, true);
        OnAsyncSaveChange(this, asyncInfo);
    }
}

//
// Create an "async operation progress" event handler for
// monitoring the progress of saving a FixedDocumentSequence.
//
private void AsyncSavingProgress(
                object sender, WritingProgressChangedEventArgs e)
{
    _batchProgress++;

    if (OnAsyncSaveChange != null)
    {
        String progress =
            String.Format("{0} - {1}", e.WritingLevel.ToString(),
                          e.Number.ToString());
        AsyncSaveEventArgs asyncInfo =
            new AsyncSaveEventArgs(progress, false);
        OnAsyncSaveChange(this, asyncInfo);
    }

    // Call EndBatchWrite when serializing multiple visuals.
    if ( (_activeVtoXPSD != null) && (_batchProgress == 3) )
        _activeVtoXPSD.EndBatchWrite();
}
Private Sub SaveMultipleFixedContentDocumentsAsync(ByVal xpsdw As XpsDocumentWriter, ByVal fds As FixedDocumentSequence)
    _xpsdwActive = xpsdw

    AddHandler xpsdw.WritingCompleted, AddressOf AsyncSaveCompleted

    AddHandler xpsdw.WritingProgressChanged, AddressOf AsyncSavingProgress

    ' Write the FixedDocumentSequence as a
    ' collection of documents asynchronously.
    xpsdw.WriteAsync(fds)
End Sub


' Cancel an async operation
Public Sub CancelAsync()
    _xpsdwActive.CancelAsync()
End Sub
#End Region ' Asynchronous Save Methods


#Region "Async Event Handlers"
'
' Create an "async operation complete" event handler
' for saving a FixedDocumentSequence
'
Private Sub AsyncSaveCompleted(ByVal sender As Object, ByVal e As WritingCompletedEventArgs)
    Dim result As String
    If e.Cancelled Then
        result = "Canceled"
    ElseIf e.Error IsNot Nothing Then
        result = "Error"
    Else
        result = "Asynchronous operation Completed"
    End If

    ' Close the pakcage
    _xpsDocument.Close()

    If OnAsyncSaveChangeEvent IsNot Nothing Then
        Dim asyncInfo As New AsyncSaveEventArgs(result, True)
        RaiseEvent OnAsyncSaveChange(Me, asyncInfo)
    End If
End Sub

'
' Create an "async operation progress" event handler for
' monitoring the progress of saving a FixedDocumentSequence.
'
Private Sub AsyncSavingProgress(ByVal sender As Object, ByVal e As WritingProgressChangedEventArgs)
    _batchProgress += 1

    If OnAsyncSaveChangeEvent IsNot Nothing Then
        Dim progress As String = String.Format("{0} - {1}", e.WritingLevel.ToString(), e.Number.ToString())
        Dim asyncInfo As New AsyncSaveEventArgs(progress, False)
        RaiseEvent OnAsyncSaveChange(Me, asyncInfo)
    End If

    ' Call EndBatchWrite when serializing multiple visuals.
    If (_activeVtoXPSD IsNot Nothing) AndAlso (_batchProgress = 3) Then
        _activeVtoXPSD.EndBatchWrite()
    End If
End Sub

Applies to