public void Stop()
        {
            Log.WriteLine("stopping client");

            _isStopping = true;
            DisablePeerConnections();
            Torrent.UpdateTrackers(TrackerEvent.Stopped, Id, Port);
        }
        public void Start()
        {
            Log.WriteLine("starting client");

            _isStopping = false;

            Torrent.ResetTrackersLastRequest();

            EnablePeerConnections();

            // tracker thread
            new Thread(() =>
            {
                while (!_isStopping)
                {
                    Torrent.UpdateTrackers(TrackerEvent.Started, Id, Port);
                    Thread.Sleep(10000);
                }
            }).Start();

            // peer thread
            new Thread(() =>
            {
                while (!_isStopping)
                {
                    ProcessPeers();
                    Thread.Sleep(1000);
                }
            }).Start();

            // upload thread
            new Thread(() =>
            {
                while (!_isStopping)
                {
                    ProcessUploads();
                    Thread.Sleep(1000);
                }
            }).Start();

            // download thread
            new Thread(() =>
            {
                while (!_isStopping)
                {
                    ProcessDownloads();
                    Thread.Sleep(1000);
                }
            }).Start();
        }