System.Timers.Timer doesn't stop when stop in editor (Ctrl+P)

//engine.cs

    private SaveLoad _saveLoad;

    void Awake()
    {
        _saveLoad = new SaveLoad(this);
    }
    void Start()
    {
    _saveLoad.startSaveProcess();
    }

//SaveLoad.cs

using UnityEngine;
using System.Collections;
using System;
using System.IO;
using System.Timers;
using System.Text;

public class SaveLoad 
{
    private Engine _parent;
    private Timer _timer;                  // From System.Timers

    public SaveLoad(Engine parent)
    {
        _parent = parent;
         _timer = new Timer(1000);         // Set up the timer for 10 seconds
        _timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
    }

    ~SaveLoad()
    {
        _timer.Enabled = false;
    }

    // called from parent 
    public void startSaveProcess()
    {
        _timer.Enabled = true;
    }

    // called from parent   
    public void stopSaveProcess()
    {
        _timer.Enabled = false;
    }

    void _timer_Elapsed(object sender, ElapsedEventArgs e)
    {
       Debug.Log("timer call");
     }
}

when i Play in editor it runs fine every second print message, but when I stop in editor(Ctrl+P), It doesn't stop print my message, timer doesn't stop, it print always after first time Play/Stop

help me

As far as i know System.Timers.Timer uses a Threadpool. In unity you should avoid to use threads. The whole Unity API is not thread save! It is designed to be used in the main thread only. Unity uses threads internally but inside scripts you should avoid it. Use coroutines instead.

You can still use threads but just for calculations or other tasks that do not involve the Unity API. Make sure no exception leaves your thread or it will crash Unity.