3.37添加请求结束时需释放的资源

创建于 2026 年 8 月 17 日约 1 分钟读完

内存安全是每位程序开发者必须高度重视的问题。在发送 HTTP 请求的过程中,有时需要引入未托管的资源,例如,在发送文件时,需要从本地读取文件并以流的形式发送。这种情况下,若处理不当,可能会遇到流资源无法释放的问题。

为解决这一问题,我们可以添加在请求结束后,自动处理这些需要释放的资源:

cs
// 打开文件并读取文件流(没有 using)var fileStream = File.OpenRead(@"C:\Workspaces\httptest.jpg");var httpRequestBuilder = HttpRequestBuilder.Post("https://furion.net/")    .SetContent(fileStream);  // 设置请求内容    .AddDisposable(fileStream) // 添加请求结束需要释放的资源    .AddDisposables(fileStream1, fileStream2); // 支持批量添加// 发送请求var responseMessage = await httpRemoteService.SendAsync(httpRequestBuilder);// 此时,fileStream,fileStream1 和 fileStream2 已自动释放。✅

AddDisposable 方法可以接受任何实现了 IDisposable 接口的对象作为参数,并且支持重复调用,每次调用都会将新的 IDisposable 对象添加到集合中。