Compartir a través de


(String) del constructor SPChangeToken

Inicializa una nueva instancia de la clase SPChangeToken , basándose en su formato serializado.

Espacio de nombres:  Microsoft.SharePoint
Ensamblado:  Microsoft.SharePoint (en Microsoft.SharePoint.dll)

Sintaxis

'Declaración
Public Sub New ( _
    strChangeToken As String _
)
'Uso
Dim strChangeToken As String

Dim instance As New SPChangeToken(strChangeToken)
public SPChangeToken(
    string strChangeToken
)

Parámetros

  • strChangeToken
    Tipo: System.String

    El formulario serializado del token de cambio.

Excepciones

Excepción Condición
InvalidOperationException

La strChangeToken no contiene los tokens correctos.

o

La versión especificada por el strChangeToken no es 1.

Comentarios

Esta sobrecarga del constructor es útil para reconstruir un token de cambio que se ha serializado y, a continuación, se almacena en el disco. Para obtener información sobre la serialización de un objeto SPChangeToken , vea el método ToString .

El token serializado tiene cinco campos separados por punto y coma (;), en el orden siguiente:

  • El número de versión como la representación de cadena de un int.

  • El ámbito, que está representado por la propiedad Scope .

  • El identificador de ámbito, que está representado por la propiedad ScopeId .

  • La fecha y hora de la misma que la representación de cadena de un objeto DateTime .

  • El número de cambio como la representación de cadena de un long.

Ejemplos

El ejemplo siguiente es una aplicación de consola que consulta al registro de cambios los cambios con ámbito de base de datos de contenido.

La primera vez que se ejecuta la aplicación, se consulta el registro para todos los cambios desde el inicio del registro. Esta consulta se realiza en primer lugar si se establece la propiedad ChangeTokenStart de un objeto SPChangeQuery en un valor nulo, y, a continuación, pasando el objeto SPQuery al método GetChanges . Después de que se han procesado todos los cambios, el programa serializa el último token de cambio desde el último lote de cambios al llamar al método ToString() y almacena el resultado en un archivo en el disco.

En ejecuciones subsiguientes, el programa deserializa el token de cambio almacenado y utiliza para establecer la propiedad ChangeTokenStart para su consulta en el registro de cambios. El trabajo importante se realiza en la función GetStartingToken , que es donde se llama al constructor SPChangeToken .

using System;
using System.IO;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;

namespace Test
{
   class ConsoleApp
   {
      private const string DATA_FILE_PATH = "ChangeToken.dat";

      static void Main(string[] args)
      {
         using (SPSite site = new SPSite("https://localhost"))
         {
            SPChangeQuery query = new SPChangeQuery(true, true);
            query.ChangeTokenStart = GetStartingToken();

            while (true)
            {
               // Get a batch of changes.
               SPChangeCollection changes = site.ContentDatabase.GetChanges(query);

               // Process them.
               foreach (SPChange change in changes)
               {
                  Console.WriteLine("Date: {0}  Type of object: {1}  Type of change: {2}",
                     change.Time.ToShortDateString(), change.GetType().ToString(), change.ChangeType);
               }

               // Starting point for next batch.
               query.ChangeTokenStart = changes.LastChangeToken;

               // If this is the last batch, exit.
               if (changes.Count < query.FetchLimit)
                  break;
            }
            // Serialize the last token as a starting point for the next run.
            SaveLastToken(query.ChangeTokenStart);
         }

         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }

      static SPChangeToken GetStartingToken()
      {
         // Passing a null token to GetChanges fetches 
         // changes from the start of the log.
         SPChangeToken token = null;

         // If we have a token from the last run, use it.
         if (File.Exists(DATA_FILE_PATH))
         {
            using (FileStream fs = File.OpenRead(DATA_FILE_PATH))
            {
               BinaryReader br = new BinaryReader(fs);
               try
               {
                  string str = br.ReadString();
                  // Construct a change token from serialized string.
                  token = new SPChangeToken(str);
               }
               catch (EndOfStreamException e)
               {
                  // No serialized string, so do nothing.
               }
               finally
               {
                  br.Close();
               }
            }
         }

         return token;
      }

      static void SaveLastToken(SPChangeToken token)
      {
         using (FileStream fs = File.Create(DATA_FILE_PATH))
         {
            // Serialize the token.
            BinaryWriter bw = new BinaryWriter(fs);
            string s = token.ToString();
            bw.Write(s);

            // Flush and close.
            bw.Flush();
            bw.Close();
         }
      }
   }
}
Imports System
Imports System.IO
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Administration

Module ConsoleApp

   Private Const DATA_FILE_PATH As String = "ChangeToken.dat"

   Sub Main()
      Using site As SPSite = New SPSite("https://localhost")

         Dim query As New SPChangeQuery(True, True)
         query.ChangeTokenStart = GetStartingToken()

         While (True)
            ' Get a batch of changes.
            Dim changes As SPChangeCollection = site.ContentDatabase.GetChanges(query)

            ' Process them.
            For Each change As SPChange In changes
               Console.WriteLine("Date: {0}  Type of object: {1}  Type of change: {2}", _
                     change.Time.ToShortDateString(), change.GetType().ToString(), change.ChangeType)
            Next

            ' This is the starting point for next batch.
            query.ChangeTokenStart = changes.LastChangeToken

            ' If this is the last batch, exit.
            If changes.Count < query.FetchLimit Then
               Exit While
            End If

         End While

         ' Serialize the last token as a starting point for the next run.
         SaveLastToken(query.ChangeTokenStart)
      End Using

      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()

   End Sub

   Function GetStartingToken() As SPChangeToken
      ' Passing a null token to GetChanges fetches 
      ' changes from the start of the log.
      Dim token As SPChangeToken = Nothing

      ' If we have a token from the last run, use it.
      If File.Exists(DATA_FILE_PATH) Then
         Using fs As FileStream = File.OpenRead(DATA_FILE_PATH)
            Dim br As BinaryReader = New BinaryReader(fs)
            Try
               Dim str As String = br.ReadString()
               ' Construct a change token from serialized string.
               token = New SPChangeToken(str)
            Catch e As EndOfStreamException
               ' No serialized string, so do nothing.
            Finally
               br.Close()
            End Try
         End Using
      End If

      Return token
   End Function

   Sub SaveLastToken(ByRef token As SPChangeToken)
      Using fs As FileStream = File.Create(DATA_FILE_PATH)
         ' Serialize the token.
         Dim bw As BinaryWriter = New BinaryWriter(fs)
         Dim s As String = token.ToString()
         bw.Write(s)
         ' Flush and close.
         bw.Flush()
         bw.Close()
      End Using
   End Sub

End Module

Vea también

Referencia

clase SPChangeToken

Miembros SPChangeToken

Sobrecarga SPChangeToken

Espacio de nombres Microsoft.SharePoint

SPChangeToken.ToString()