Поделиться через


Метод ISupportFilteredSync.TryAddFilter

При переопределении в производном классе задает фильтр, используемый для перечисления изменений поставщиком источника.

Пространство имен: Microsoft.Synchronization
Сборка: Microsoft.Synchronization (в microsoft.synchronization.dll)

Синтаксис

'Декларация
Function TryAddFilter ( _
    filter As Object, _
    filteringType As FilteringType _
) As Boolean
'Применение
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

Параметры

  • filter
    Фильтр, используемый для перечисления изменений поставщиком источника.
  • filteringType
    Указывает тип данных, включаемых в пакет изменений в процессе выборочной синхронизации.

Возвращаемое значение

Значение true, если поддерживается фильтр, заданный в параметре filter. В противном случае значение false.

Замечания

Согласование фильтров достигается выполнением следующих действий.

  1. Прежде чем поставщик источника начинает перечисление изменений, Sync Framework инициирует согласование фильтров вызовом метода SpecifyFilter интерфейса IRequestFilteredSync, реализуемого поставщиком назначения.

  2. В процессе обработки SpecifyFilter поставщик назначения передает фильтры функции ответного вызова FilterRequestCallback, которая определена в Sync Framework.

  3. В процессе обработки FilterRequestCallbackSync Framework вызывает метод TryAddFilter интерфейса ISupportFilteredSync, реализованного поставщиком источника. Если поставщик источника не поддерживает запрошенный фильтр, то поставщик назначения может продолжить запрашивать фильтры до тех пор, пока не найдет поддерживаемый.

Как только согласование фильтра успешно завершено, поставщик источника пользуется им для определения элементов, которые необходимо включить в процесс перечисления изменений.

Примечания по реализации. Реализация этого метода обеспечивает проверку фильтра, указываемого параметрами filter и filteringType, и возвращает значение false, если этот фильтр не поддерживается. Поставщик назначения может запрашивать различные фильтры до тех пор, пока не будет найден поддерживаемый.

Пример

В следующем примере реализуется метод TryAddFilter. Этот фильтр используется для синхронизации только в том случае, если он отслеживается репликой.

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);
}

См. также

Справочник

Интерфейс ISupportFilteredSync
Элементы ISupportFilteredSync
Пространство имен Microsoft.Synchronization