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
)
abstract TryAddFilter :
filter:Object *
filteringType:FilteringType -> bool
function TryAddFilter(
filter : Object,
filteringType : FilteringType
) : boolean
パラメーター
- filter
型 : System. . :: . .Object
同期元プロバイダーによって変更の列挙で使用されるフィルターです。
- filteringType
型 : Microsoft.Synchronization. . :: . .FilteringType
フィルターされた同期時に変更バッチに含める情報の種類を示します。
戻り値
型 : System. . :: . .Boolean
filter で指定されたフィルターがサポートされている場合は True、それ以外の場合は false です。
説明
フィルターのネゴシエーションは、次の手順を使用して行われます。
同期元プロバイダーが変更の列挙を開始する前に、Sync Framework が同期先プロバイダーに実装されている IRequestFilteredSync インターフェイスの SpecifyFilter メソッドを呼び出して、フィルターのネゴシエーションを開始します。
SpecifyFilter の処理中に、同期先プロバイダーは、Sync Framework で指定されている FilterRequestCallback にフィルターを渡します。
FilterRequestCallback の処理中に、Sync Framework は、同期元プロバイダーによって実装されている ISupportFilteredSync インターフェイスの TryAddFilter(Object) メソッドを呼び出します。要求されたフィルターが同期元プロバイダーでサポートされていない場合、同期先プロバイダーは、サポートされているフィルターが見つかるまで、フィルターを要求し続けることができます。
フィルターのネゴシエーションが正常に終了すると、同期元プロバイダーは、このフィルターを使用して、変更の列挙時に含める項目を決定します。
実装に関するメモ
このメソッドの実装では、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);
}