c# – 如何处置Task中使用的MemoryStream?
发布时间:2020-12-15 08:30:55 所属栏目:百科 来源:网络整理
导读:我有以下方法: public void Write() { var tasks = new ListTask(); while(...) { var memoryStream = new MemoryStream(...); var task = _pageBlob.WritePagesAsync(memoryStream,... ); tasks.Add(task); } Task.WaitAll(tasks.ToArray());} 如何在Task
我有以下方法:
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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- haskell – 结构化数据验证的依赖类型
- Flex中如何设置CheckBox标签(Label)与主题(theme )颜色的例
- 如何从Ruby 1.8或1.9调用Java API
- 是否可以使用AJAX加载新的Javascript文件?
- c# – Contravariance和Entity Framework 4.0:如何将Entit
- LINQ To XML:根据一个XML覆盖另一个XML节点内容
- c# – 滚动X轴绘图区域 – Silverlight柱系列
- 正则表达式 – 如何从Perl中的字符串中提取子串?
- 如何使用管道将C中的数据从两个子节点发送到父节点?
- 为什么Oracle varchar2具有强制大小作为定义参数?