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。
备注
筛选器协商的实现步骤如下:
在源提供程序开始枚举变更之前,Sync Framework 通过调用目标提供程序实现的 IRequestFilteredSync 接口的 SpecifyFilter 方法启动筛选器协商。
在处理 SpecifyFilter 的过程中,目标提供程序会将筛选器传递给 Sync Framework 指定的 FilterRequestCallback。
在处理 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 命名空间