Compartilhar via


Método ISupportFilteredSync.TryAddFilter

Quando substituído em uma classe derivada, define o filtro que é usado para enumeração de alteração pelo provedor de origem.

Namespace: Microsoft.Synchronization
Assembly: Microsoft.Synchronization (em microsoft.synchronization.dll)

Sintaxe

'Declaração
Function TryAddFilter ( _
    filter As Object, _
    filteringType As FilteringType _
) As Boolean
'Uso
Dim instance As ISupportFilteredSync
Dim filter As Object
Dim filteringType As FilteringType
Dim returnValue As Boolean

returnValue = instance.TryAddFilter(filter, filteringType)
bool TryAddFilter (
    Object filter,
    FilteringType filteringType
)
bool TryAddFilter (
    Object^ filter, 
    FilteringType filteringType
)
boolean TryAddFilter (
    Object filter, 
    FilteringType filteringType
)
function TryAddFilter (
    filter : Object, 
    filteringType : FilteringType
) : boolean

Parâmetros

  • filter
    O filtro que é usado para enumeração de alteração pelo provedor de origem.
  • filteringType
    Indica o tipo de informações incluídas em um lote de alterações durante a sincronização filtrada.

Valor de retorno

True quando o filtro especificado por filter tiver suporte. Caso contrário, false.

Comentários

A negociação de filtro é obtida por meio das seguintes etapas:

  1. Antes de o provedor de origem começar a enumerar alterações, o Sync Framework inicia a negociação de filtro chamando o método SpecifyFilter da interface IRequestFilteredSync que o provedor de destino implementou.

  2. Durante o processamento de SpecifyFilter, o provedor de destino transmite filtros a FilterRequestCallback que é especificado pelo Sync Framework.

  3. Durante o processamento de FilterRequestCallback, o Sync Framework chama o método TryAddFilter da interface ISupportFilteredSync que o provedor de origem implementou. Se o provedor de origem não oferecer suporte ao filtro solicitado, o provedor de destino poderá continuar solicitando filtros até encontrar um que tenha suporte.

Quando um filtro tiver sido negociado com êxito, o provedor de origem o usará para determinar os itens a serem incluídos durante a enumeração de alteração.

Observações para implementadores: Uma implementação desse método pode examinar o filtro especificado por filter e filteringType, e retorna false para indicar que o filtro não tem suporte. O provedor de destino pode então solicitar filtros diferentes até que seja encontrado um que tenha suporte.

Exemplo

O exemplo a seguir implementa TryAddFilter. O filtro é usado para sincronização somente quando é um filtro controlado pela réplica.

Public Function TryAddFilter(ByVal filter As Object, ByVal filteringType As FilteringType) As Boolean Implements ISupportFilteredSync.TryAddFilter
    _filterForSync = Nothing

    ' The filter must be tracked by both replicas.
    For filterKey As Integer = 0 To _filterKeyMap.Count - 1
        If _filterKeyMap(filterKey).IsIdentical(DirectCast(filter, ISyncFilter)) Then
            _filterForSync = DirectCast(_filterKeyMap(filterKey), AddressFilter)
            _filteringType = filteringType
            Exit For
        End If
    Next

    Return (_filterForSync IsNot Nothing)
End Function
public bool TryAddFilter(object filter, FilteringType filteringType)
{
    _filterForSync = null;

    // The filter must be tracked by both replicas.
    for (int filterKey = 0; filterKey < _filterKeyMap.Count; filterKey++)
    {
        if (_filterKeyMap[filterKey].IsIdentical((ISyncFilter)filter))
        {
            _filterForSync = (AddressFilter)_filterKeyMap[filterKey];
            _filteringType = filteringType;
            break;
        }
    }

    return (null != _filterForSync);
}

Consulte também

Referência

Interface ISupportFilteredSync
Membros ISupportFilteredSync
Namespace Microsoft.Synchronization