c# – 如何处置Task中使用的MemoryStream?

c# – 如何处置Task中使用的MemoryStream?,第1张

概述我有以下方法: public void Write() { var tasks = new List<Task>(); while(...) { var memoryStream = new MemoryStream(...); var task = _pageBlob.WritePagesAsync(memoryStream, ... ); 我有以下方法:
public voID Write() {     var tasks = new List<Task>();     while(...) {         var memoryStream = new MemoryStream(...);         var task = _pageBlob.WritePagesAsync(memoryStream,... );         tasks.Add(task);     }         Task.WaitAll(tasks.ToArray());}

如何在Task中正确处理memoryStream?我需要在任务完成时处理memoryStream对象.

解决方法 将while循环体拆分为单独的异步方法:
private async Task WriteAsync(...){  using (var memoryStream = new MemoryStream(...))  {    await _pageBlob.WritePagesAsync(memoryStream,...);  }}

然后使用您的新方法:

public voID Write() {  var tasks = new List<Task>();  while(...) {    tasks.Add(WriteAsync(...));  }      Task.WaitAll(tasks.ToArray());}

另外,阻塞异步代码(Task.WaitAll)通常不是一个好主意.更自然的方法是保持异步:

public async Task WriteAsync() {  var tasks = new List<Task>();  while(...) {    tasks.Add(WriteAsync(...));  }      await Task.WhenAll(tasks);}
总结

以上是内存溢出为你收集整理的c# – 如何处置Task中使用的MemoryStream?全部内容,希望文章能够帮你解决c# – 如何处置Task中使用的MemoryStream?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1249906.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存