我有以下代码,我试图弄清楚是否可以在任务和取消令牌上显式调用 dispose。我读过微软建议在任务上调用 dispose() ,除非你必须做一些奇怪的事情才能调用它。我也很欣赏可能有更好的方法来做到这一点,但我很想知道它是否适用于当前的设置。
public void UpdateSProcList(CancellationToken cancelTask)
{
Task parentTask = Task.Factory.StartNew(() =>
{
//Call the handling method.
ChildTaskSync(cancelTask);
});
}
public void ChildTaskSync(CancellationToken cancelTask)
{
SProcInformationEventArgs sProcListRetrieval = new SProcInformationEventArgs();
//Check for cancellation.
if(!cancelTask.IsCancellationRequested)
{
try
{
ObtainSProcList(sProcListRetrieval);
}
catch (AggregateException AEx)
{
if (AEx.InnerException is OperationCanceledException)
{
....
}
}
finally
{
//Call method to raise event.
OnVerificationCompleted(this, sProcListRetrieval);
}
}
else
{
sProcListRetrieval.CarriedOutToCompletion = false;
OnVerificationCompleted(this, sProcListRetrieval);
}
}
第一种方法允许 GUI 线程返回并继续更新 UI。第二种方法检索存储过程列表。
谢谢你的时间。