共用方式為


IRequestFilteredSync.SpecifyFilter 方法

在衍生類別中覆寫時,會交涉在變更列舉期間由來源提供者使用的篩選。

命名空間: Microsoft.Synchronization
組件: Microsoft.Synchronization (在 microsoft.synchronization.dll)

語法

'宣告
Sub SpecifyFilter ( _
    filterRequest As FilterRequestCallback _
)
'用途
Dim instance As IRequestFilteredSync
Dim filterRequest As FilterRequestCallback

instance.SpecifyFilter(filterRequest)
void SpecifyFilter (
    FilterRequestCallback filterRequest
)
void SpecifyFilter (
    FilterRequestCallback^ filterRequest
)
void SpecifyFilter (
    FilterRequestCallback filterRequest
)
function SpecifyFilter (
    filterRequest : FilterRequestCallback
)

參數

  • filterRequest
    由目的地提供者所使用的委派,以便要求在變更列舉期間由來源提供者使用某個篩選。

備註

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

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

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

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

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

實作器注意事項: 這個方法的實作可以使用不同的篩選來重複呼叫 FilterRequestCallback,直到找到目的地提供者和來源提供者同時支援的篩選為止。為了回應 TryAddFilter 呼叫,來源提供者會透過傳回 false,表示它不支援篩選。

範例

下列範例會實作 SpecifyFilter。被要求當做同步處理篩選的第一個追蹤篩選。如果來源提供者拒絕這個要求的篩選,就會擲回例外狀況。

Public Sub SpecifyFilter(ByVal filterRequest As FilterRequestCallback) Implements IRequestFilteredSync.SpecifyFilter
    ' Use the first tracked filter as the filter for sync.
    If 0 < _ContactStore.TrackedFilters.Count Then
        _filterForSync = _ContactStore.TrackedFilters(0)
    End If

    ' The source provider must agree to send a filtered change batch.
    If Not filterRequest(_filterForSync, FilteringType.CurrentItemsAndVersionsForMovedOutItems) Then
        Throw New SyncInvalidOperationException("Filter specified by SpecifyFilter was rejected.")
    End If
End Sub
public void SpecifyFilter(FilterRequestCallback filterRequest)
{
    // Use the first tracked filter as the filter for sync.
    if (0 < _ContactStore.TrackedFilters.Count)
    {
        _filterForSync = _ContactStore.TrackedFilters[0];
    }

    // The source provider must agree to send a filtered change batch.
    if (!filterRequest(_filterForSync, FilteringType.CurrentItemsAndVersionsForMovedOutItems))
    {
        throw new SyncInvalidOperationException("Filter specified by SpecifyFilter was rejected.");
    }
}

請參閱

參考

IRequestFilteredSync 介面
IRequestFilteredSync 成員
Microsoft.Synchronization 命名空間