gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:00:00 25 4
gpt4 key购买 nike

我有一个相当大的(代表一个图像)。我有两个任务要做:

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

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

我不知道这两个任务中哪个先完成。

最佳答案

如果您的实现是线程安全的,并且您确实需要从多个地方使用一次性用品,您可以使用 RefCountDisposable来自 ReactiveExtensions (Rx)。例如:

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

ref1ref2 都被释放时,stream 将被释放。

关于c# - 在异步任务仍在使用时处置流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28891070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com