关于using语句,我有一些疑问:
我有一个名为MyJob的类,该类是可释放的。然后,我还有一个在MyJob上也是可释放的属性JobResults。
我的代码:
using (MyJob job = new MyJob())
{
//do something.
FormatResults(job.JobResults)
}
public string FormatResuls(JobResuts results)
{
}
我的第一个问题是:在使用块之后,MyJob和MyJob.Results是否都被处理或只有MyJob而不是MyJob.Results?
我还在使用C#中的任务进行并行处理:
Tasks allTasks = List<Tasks>
try
{
foreach(Task t in allTasks)
{
// Each tasks makes use of an IDisposable object.
t.Start();
}
Task.WaitAll(allTasks);
}
catch(AggregateExecption aex)
{
/// How do I ensure that all IDisposables are disposed properly if an exception happens in any of the tasks?
}
我的第二个问题是,在上面的代码中,处理任务异常时确保正确处理对象清理的正确方式是什么?
如果我的问题太幼稚或令人困惑,请原谅,因为我仍在学习和理解C#。感谢各位!
using
语句背后没有额外的魔法,除了所谓的“语法糖”之外,在执行封闭的代码块后调用IDisposable.Dispose
参数。 - Grx70