小编Dav*_*vid的帖子

File.ReadLines何时释放资源

在使用C#中的文件时,我习惯于考虑释放相关资源.通常这是一个using语句,除非它是像File.ReadAllLines这样的单行内容方法,它将为我打开和关闭文件.

.Net 4.0引入了方便的File.ReadLines方法.这将返回一个IEnumerable,并被视为一种更有效的方法来处理文件 - 它避免将整个文件存储在内存中.为此,我假设枚举器中有一些延迟执行逻辑.

显然,因为这个方法返回一个IEnumerable,而不是IDisposable,我不能用我对使用语句的直觉反应.

我的问题是:考虑到这一点,使用此方法是否存在资源释放的问题?

调用此方法是否意味着关联文件锁的释放是不确定的?

c# .net-4.0

13
推荐指数
2
解决办法
4148
查看次数

MSDN处理TPL中的异常的示例 - 这是竞争条件吗?

我正在查看来自MSDN @的TPL异常处理示例

http://msdn.microsoft.com/en-us/library/dd537614(v=VS.100).aspx

代码的基本形式是:

Task task1 = Task.Factory.StartNew(() => { throw new IndexOutOfRangeException(); });
try
{
   task1.Wait();
}
catch (AggregateException ae)
{
   throw ae.Flatten();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:这是竞争条件吗?如果task1在try执行之前抛出会发生什么?我错过了阻止这场比赛的东西吗?

不应该这样写:

try
{
   Task task1 = Task.Factory.StartNew(() => { throw new IndexOutOfRangeException(); });
   task1.Wait();
}
catch (AggregateException ae)
{
   throw ae.Flatten();
}
Run Code Online (Sandbox Code Playgroud)

c# race-condition task-parallel-library

4
推荐指数
1
解决办法
1244
查看次数