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
由目的地提供者所使用的委派,以便要求在變更列舉期間由來源提供者使用某個篩選。
備註
篩選交涉是使用下列步驟所達成:
在來源提供者開始列舉變更之前,Sync Framework 會呼叫目的地提供者所實作之 IRequestFilteredSync 介面的 SpecifyFilter 方法,藉以啟動篩選交涉。
在處理 SpecifyFilter 期間,目的地提供者會將篩選傳遞給 Sync Framework 所指定的 FilterRequestCallback。
在處理 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 命名空間