Main Content

matlab.net.http.ProgressMonitor 类

命名空间: matlab.net.http
超类: handle

HTTP 消息交换的进度监视器

描述

可使用 ProgressMonitor 类为 HTTP 请求消息实现进度监视器。进度监视器可以侦听此类的属性更改,以显示或更新您所选择的内容。

要实现进度监视器,请创建此类的子类。然后创建 HTTPOptions 对象,将该子类指定为 ProgressMonitorFcn 属性,并将 UseProgressMonitor 属性设置为 true

当您调用 RequestMessage.send 方法时,将启动 HTTP 请求。在存在重定向和身份验证的情况下,此过程可能涉及到两个方向上的多个消息。当所有传输完成后,MATLAB® 将调用 done 方法。

在传输过程中:

  • 当您调用 RequestMessage.send 时,MATLAB 将设置 MaxCancelFcnDirection 属性。

  • 随着请求消息主体的发送,MATLAB 将重复设置 Value 属性,以指示已传输的字节数。

  • 当开始接收 ResponseMessage 后,MATLAB 会将 Direction 设置为 Response,并再次重复设置 Value

  • 要随时取消传输,请调用 CancelFcn 函数。此操作相当于在命令行窗口中中断 send 函数。

Direction 变成 Response 之后,您可以显示图形进度指示条或其他进度指示。对于每个后续 Value,将指示条更新为当前 Value。您还可以利用此机制,以编程方式监视进度。

matlab.net.http.ProgressMonitor 类是一个 handle 类。

创建对象

obj = matlab.net.http.ProgressMonitor(Name,Value) 创建一个进度监视器并由一个或多个名称-值对组参数指定其他属性。Name 是属性名称,Value 是对应的值。您可采用任意顺序指定多个名称-值对组参数,例如 Name1,Value1,...,NameN,ValueN。未指定的属性设置为默认值。

属性

全部展开

第一次调用之前的秒数以及两次调用之间的最大时间间隔,指定为双精度值。

Interval 是传输开始之后、第一次设置 Value 属性之前的时间量(以秒为单位)。Interval 是两次设置 Value 之间的最大时间量建议值,跟进度无关。如果数据的总传输时间少于 Interval 秒,则不设置 Value。如果在上一次设置 Value 之后 Interval 秒内没有数据传输,Value 可能会再次设置为同一个值。这样,即使没有进度,您的 ProgressMonitor 对象也可以取消传输(通过调用 CancelFcn)。

Interval 值是建议的值。如果一直没有进度,则不能保证 MATLAB 在 Interval 秒内设置 Value

默认时间间隔为 2 秒 。要指定不同的值,请在构造函数中设置 Interval。没有进度时,连续设置 Value 之间的最小时间间隔为 0.1 秒。但是,如果 Value 改变,它还可以设置为比此时间间隔更小的值。

在第一次设置 Value 之后,对于同一交换中的后续消息,Value 的设置不会出现延迟。

监视器正在使用中指示符,指定为 truefalse。MATLAB 设置此属性以指示它是否正在传输过程中使用此 ProgressMonitor 对象。InUse 可防止您同时将此对象重用于多个传输。

数据类型: logical

为取消传输而调用的函数,指定为函数句柄。MATLAB 将 CancelFcn 设置为您的 ProgressMonitor 为了取消传输而应调用的函数。调用此函数的效果相当于在命令行窗口中中断传输。

最大传输长度,指定为 uint64。如果最大传输长度未知,则 Max[]Max 是显示的进度指示条的最大值。

MATLAB 将基于 Content-Length 标头字段,在每次发送和接收操作的开始时将 Max 设置为预计要传输的字节数。

如果消息中不包含 Content-Length 字段,则 Max[]。在这种情况下,您无法确定已完成的传输百分比。但您仍然可以在 Value 属性中监视变化。

传输方向,指定为 matlab.net.http.MessageType 对象。MATLAB 通过设置 Direction,指示是监视请求消息的进度还是监视响应消息的进度。如果没有传输,则 Direction 为空。

到目前为止已传输的字节数,指定为 uint64。MATLAB 将 Value 重复设置为当前消息已传输的总字节数。但是,在交换过程中,第一次设置此属性的时间会延迟到消息开始传输之后至少 Interval 秒。

可为此属性实现 set.Value 方法,以监视传输进度。您还可以在 set.Value 方法中实现从进度监视器内取消传输的功能。

MATLAB 可能会在给定传输的末尾将 Value 设置为空,以指示当前方向的传输结束。当所有传输结束时,MATLAB 总是会在调用 done 方法之前将 Value 设置为空。

您无法控制 MATLAB 更新 Value 属性的频率。但是,即使没有进度,MATLAB 也会至少每隔 Interval 秒设置一次 Value。这种行为使您可在没有传输时调用 CancelFcn。如果传输开始后 Interval 秒内未传输任何字节,Value 可能为零。

方法

全部展开

版本历史记录

在 R2016b 中推出