课堂会话
封装同步会话的对象。 会话表示客户端(以及磁盘上的本地 Realm 文件)与 MongoDB Atlas 之间的通信。 会话始终由 SDK 创建并通过各种 API 发出。 与 Realm 关联的会话的生命周期是自动管理的。
implements
命名空间: Realm 。 Sync
程序集:Realm.dll
语法
public class Session : INotifyPropertyChanged
属性
| 编辑本页 查看源代码ConnectionState
获取会话的当前连接状态。
声明
public ConnectionState ConnectionState { get; }
属性值
类型 | 说明 |
---|---|
ConnectionState | 指示会话连接状态的枚举值。 |
路径
获取支持此会话代表的Realm的 Realm 文件的磁盘上路径。
声明
public string Path { get; }
属性值
类型 | 说明 |
---|---|
字符串 | 文件路径。 |
州
获取会话的当前状态。
声明
public SessionState State { get; }
属性值
类型 | 说明 |
---|---|
SessionState | 指示会话状态的枚举值。 |
user
获取由用于连接到 MongoDB Atlas 的 SyncConfigurationBase 定义的 用户 。
声明
public User User { get; }
属性值
类型 | 说明 |
---|---|
user | 用于创建 Realm 的 SyncConfigurationBase 的 用户 。 |
方法
| 编辑本页 查看源代码GetProgressObservable(ProgressDirection, ProgressMode)
获取可用于追踪上传或下载进度的IObservable<T> 。
声明
public IObservable<SyncProgress> GetProgressObservable(ProgressDirection direction, ProgressMode mode)
参数
类型 | 名称 | 说明 |
---|---|---|
ProgressDirection | 方向 | 要在订阅回调中跟踪的传输方向(上传或下载)。 |
ProgressMode | 模式 | 此进度通知块的所需行为。 |
返回:
类型 | 说明 |
---|---|
IObservable < SyncProgress > | 您可以订阅和接收进度更新的可观察对象。 |
备注
要开始接收通知,应在返回的对象上调用Subscribe(IObserver<T>) 。 只要需要进度通知,就应保留从订阅 (IObserver<T>)返回的令牌。 要停止接收通知,请对令牌调用Dispose() 。 You don't need to keep a reference to the observable itself. The progress callback will always be called once immediately upon subscribing in order to provide the latest available status information.
示例
class ProgressNotifyingViewModel
{
private IDisposable notificationToken;
public void ShowProgress()
{
var observable = session.GetProgressObservable(ProgressDirection.Upload, ProgressMode.ReportIndefinitely);
notificationToken = observable.Subscribe(progress =>
{
// Update relevant properties by accessing progress.ProgressEstimate
});
}
public void HideProgress()
{
notificationToken?.Dispose();
notificationToken = null;
}
}
在此示例中,我们使用响应 式扩展 类库中的 ObservableExtensions.Subscribe 。如果不想依赖它,可以创建一个实现IObserver<T>的类,并用它来进行订阅。
| 编辑本页 查看源代码Start()
尝试恢复会话并启用与服务器的同步。
声明
public void Start()
备注
默认情况下,所有会话都处于活动状态,并且仅在之前调用过Stop()的情况下调用此方法才有意义。
Stop()
停止与服务器的任何同步,直到完全关闭 Realm 后再次重新打开 Realm。
可以通过再次调用Start()来重新启用同步。
声明
public void Stop()
备注
如果会话已停止,则调用此方法不会执行任何操作。
WaitForDownloadAsync(CancellationToken?)
等待会话完成所有待处理的下载。
声明
public Task WaitForDownloadAsync(CancellationToken? cancellationToken = null)
参数
类型 | 名称 | 说明 |
---|---|---|
CancelationToken ? | cancelledToken | 可选取消令牌,可用于取消等待操作。 |
返回:
类型 | 说明 |
---|---|
任务 | 当此 会话 的所有待处理下载完成时,将完成的可等待 任务 。 |
异常
类型 | 条件 |
---|---|
InvalidOperationException | 等待出错的会话时抛出该异常。 |
WaitForUploadAsync(CancellationToken?)
等待会话完成所有待处理的上传。
声明
public Task WaitForUploadAsync(CancellationToken? cancellationToken = null)
参数
类型 | 名称 | 说明 |
---|---|---|
CancelationToken ? | cancelledToken | 可选取消令牌,可用于取消等待操作。 |
返回:
类型 | 说明 |
---|---|
任务 | 当此 会话 的所有待处理上传完成时,将完成的可等待 任务 。 |
异常
类型 | 条件 |
---|---|
InvalidOperationException | 等待出错的会话时抛出该异常。 |
事件(Events)
| 编辑本页 查看源代码PropertyChanged
属性值更改时发生。
声明
public event PropertyChangedEventHandler? PropertyChanged
eventType
类型 | 说明 |
---|---|
PropertyChangedEventHandler |