Property OnDataReceived
OnDataReceived
流式数据回调(文件下载等场景)。 设置后响应体不缓冲,数据逐块交付,Response.Body 为 null。 在后台线程调用。参数: (buffer, offset, length)
public Action<byte[], int, int> OnDataReceived { get; set; }
Property Value
Remarks
契约:回调必须快速返回。 该回调在 libcurl 的 write function 调用栈内执行,libcurl 不允许中断进行中的回调;在回调里阻塞会直接 占住 worker 线程:
- 同一 IHttpClient 上其它请求的 I/O 推进会被延迟;
- Dispose 时 worker 线程无法及时退出;超过内部超时后 Dispose 会 跳过 curl_multi_cleanup(记一条错误日志),让 multi handle 交由 OS 在进程退出时回收,以免与仍在执行的回调发生 use-after-free。