在异步任务仍在使用时处置流

yazanpro

我有一个很大的stream(代表一张图片)。我有两个任务要做:

  1. 我想使用异步方法将流上传到云(我假设该方法由来支持Task.Run
  2. 在上传流时,我需要在本地读取流(以便从图像中创建缩略图)。

我的问题是:由于同一流对象在两个不同的异步任务中被两个指针引用,因此我应该在哪里放置该流?我可以检测引用流的指针的数量吗?还是至少我可以在处置流之前检测到该流是否正在使用(甚至被另一个线程使用)?

我不知道两项任务中的哪一项先完成。

内迪·意大利面

如果您的实现是线程安全的,并且您确实确实需要在多个地方使用一次性容器那么您可以在ReactiveExtensions(Rx)中使用RefCountDisposable例如:

RefCountDisposable refDisposable = new RefCountDisposable(stream);     
IDisposable ref1 = refDisposable.GetDisposable();
IDisposable ref2 = refDisposable.GetDisposable();

ref1ref2都被处置时,stream将被处置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

异步任务仍在阻止UI线程

来自分类Dev

使用异步任务读取文件流,而不是无尽的while循环

来自分类Dev

全部使用时的任务

来自分类Dev

全部使用时的任务

来自分类Dev

仍在使用时还原已删除的文件

来自分类Dev

使用异步任务取消任务

来自分类Dev

将后台安全任务与异步/等待结合使用时的正确实现

来自分类Dev

如何使用异步任务

来自分类Dev

使用xUnit.net的任务支持测试F#异步工作流

来自分类Dev

使用highland.js参照原始流数据依次执行异步任务

来自分类Dev

使用highland.js参照原始流数据依次执行异步任务

来自分类Dev

中止先前的异步调用并处置已使用的资源

来自分类Dev

处置JavaFX任务

来自分类Dev

何时使用异步返回任务

来自分类Dev

使用异步任务下载图像

来自分类Dev

对位图使用异步任务

来自分类Dev

何时使用异步返回任务

来自分类Dev

数据流(任务并行库)和异步等待

来自分类Dev

使用LINQ select返回异步任务

来自分类常见问题

如何使用LINQ异步等待任务列表?

来自分类Dev

使用Promise等待嵌套的异步任务

来自分类Dev

在构建器模式下使用异步任务

来自分类Dev

在异步任务中使用外部类变量

来自分类Dev

在任务中使用异步套接字

来自分类Dev

使用Service进行操作-异步任务

来自分类Dev

嵌套的异步任务(在Java中使用CompletionStage)

来自分类Dev

如何使用异步任务导致if语句

来自分类Dev

如何使用CancellationToken链接异步任务?

来自分类Dev

使用任务异步方法加载集合视图