1

我有以下代码,我试图弄清楚是否可以在任务和取消令牌上显式调用 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。第二种方法检索存储过程列表。

谢谢你的时间。

4

0 回答 0