how to pause and resume Timeline clips?

I made a pause Function using UGUI, it works well in all projects except projects using timeline animations.
I use timeline api for pause and resume, it can pause the graphs but when i trigger the proceed button, the next graphs( at the same clip) acts oddly, for example, in an explosion scene clip, some models should have been blown up and fallen down, but the fact is the models becomes relatively static and remain in the scene all the time, just like they are locked, untill the next timeline clip triggered, they are still there, the next timeline clip acts well.

the following code is what i made to realize pause and resume play functions, i have wasted a whole afternoon tring to fix it, but not solve it yet. is there any resolutions?

private PlayableDirector[] Pd = null;

void Start()
{
    Pd = Resources.FindObjectsOfTypeAll(typeof(PlayableDirector)) as PlayableDirector[];
}

void PauseButtonFunc()
{
            if (currentVideoPlayer != null && currentVideoPlayer.isPlaying)
            {
             
                currentVideoPlayer.Pause();
            }
            AudioListener.pause = true;    
           
    
            if (Pd != null)
            {
                for (int i = 0; i < Pd.Length; i++)
                {
                    if (Pd[i].isActiveAndEnabled)
                    {
                        Pd[i].Pause();
                    }
                }
            }
}

void ProceedButtonFunc()
{    
            if (currentVideoPlayer!=null && !currentVideoPlayer.isPlaying)
            {
                currentVideoPlayer.Play();
            }
            AudioListener.pause = false;
            Time.timeScale = 1;

            if (Pd != null)
            {
                for (int i = 0; i < Pd.Length; i++)
                {
                    if (!Pd[i].isActiveAndEnabled)
                    {
                        Pd[i].Play();
                    }
                }
            }
}

Try using

if (Pd[i].playableGraph.IsValid())
    Pd[i].playableGraph.GetRootPlayable(0).SetSpeed(0); // 1 to renable

instead.

Pause() can cause activations and de-activations, which I would hazard a guess to be the root cause of the problem. Where as changing the playback speed will simply freeze the objects.

Many thanks, you’ve totally solved my problem!