XpsDocumentWriter.WritingProgressChanged 事件
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
發生於 XpsDocumentWriter 更新進度時。
public:
override event System::Windows::Documents::Serialization::WritingProgressChangedEventHandler ^ WritingProgressChanged;
public override event System.Windows.Documents.Serialization.WritingProgressChangedEventHandler WritingProgressChanged;
member this.WritingProgressChanged : System.Windows.Documents.Serialization.WritingProgressChangedEventHandler
Public Overrides Custom Event WritingProgressChanged As WritingProgressChangedEventHandler
事件類型
範例
下列範例示範如何建立和使用 WritingProgressChanged 事件處理常式。
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