共用方式為


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
    表示在篩選同步處理期間變更批次中所包含的資訊類型。

傳回值

如果支援 filter 所指定的篩選,則為 True,否則為 false

備註

篩選交涉是使用下列步驟所達成:

  1. 在來源提供者開始列舉變更之前,Sync Framework 會呼叫目的地提供者所實作之 IRequestFilteredSync 介面的 SpecifyFilter 方法,藉以啟動篩選交涉。

  2. 在處理 SpecifyFilter 期間,目的地提供者會將篩選傳遞給 Sync Framework 所指定的 FilterRequestCallback

  3. 在處理 FilterRequestCallback 期間,Sync Framework 會呼叫來源提供者所實作之 ISupportFilteredSync 介面的 TryAddFilter 方法。如果來源提供者不支援要求的篩選,目的地提供者就可以繼續要求篩選,直到它找到支援的篩選為止。

成功交涉篩選之後,來源提供者就會用它來判斷要在變更列舉期間包含哪些項目。

實作器注意事項: 這個方法的實作可以檢查 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 命名空間