1

私は次のコードを持っており、タスクとキャンセルトークンで明示的に破棄を呼び出すことができるかどうかを調べようとしています。呼び出すために奇妙なことをしなければならない場合を除き、タスクで dispose() を呼び出すことを Microsoft が推奨していることを読みました。おそらくこれを行うためのより良い方法があることにも感謝しますが、現在のセットアップで可能かどうか知りたいです.

    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 の更新を続行できます。2 番目のメソッドは、ストアド プロシージャのリストを取得します。

御時間ありがとうございます。

4

0 に答える 0