C # Threading.Suspend en Obsoleto, el subproceso ha quedado en desuso?

En mi aplicación, estoy realizando la lectura de mi archivo por otro hilo (que no sea el hilo GUI). Hay dos botones que suspenden y reanudan el hilo respectivamente.

private void BtnStopAutoUpd_Click(object sender, EventArgs e)
        {
           autoReadThread.Suspend();
        }

private void BtnStartAutoUpd_Click(object sender, EventArgs e)
        {
           autoReadThread.Resume();  
        }

pero me enfrento a esta advertencia,

Thread.Suspend ha quedado en desuso. Utilice otras clases en System.Threading, como Monitor, Mutex, Event y Semaphore, para sincronizar Threads o proteger recursos.http://go.microsoft.com/fwlink/?linkid=14202

De todos modos, solo ejecuto un solo subproceso (en lugar de un subproceso de GUI), así que ¿cómo puedo aplicar la sincronización aquí o monitorear?

Código de actualización:

 class ThreadClass
{

    // This delegate enables asynchronous calls for setting the text property on a richTextBox control.
    delegate void UpdateTextCallback(object text);

    // create thread that perform actual task
    public Thread autoReadThread = null;

    public ManualResetEvent _event = new ManualResetEvent(true);

    // a new reference to rich text box
    System.Windows.Forms.RichTextBox Textbox = null;

    private volatile bool _run;

    public bool Run
    {
        get { return _run; }
        set { _run = value; }
    }

    public ThreadClass(string name, System.Windows.Forms.RichTextBox r1)
    {
        Textbox = r1;
        Run = true;
        this.autoReadThread = new Thread(new ParameterizedThreadStart(UpdateText));
        this.autoReadThread.Start(name);
    }

    private void UpdateText(object fileName)
    {

        //while (true)
        //{
        //    _event.WaitOne();
            while (Run)
            {

                if (Textbox.InvokeRequired)
                {
                    UpdateTextCallback back = new UpdateTextCallback(UpdateText);
                    Textbox.BeginInvoke(back, new object[] { fileName });
                    Thread.Sleep(1000);
                }

                else
                {
                    string fileToUpdate = (string)fileName;
                    using (StreamReader readerStream = new StreamReader(fileToUpdate))
                    {
                        Textbox.Text = readerStream.ReadToEnd();
                    }
                    break;
                //}
            }
        }       
    }

}

}

run es un valor bool, un hilo lo controla (Inicialmente es verdadero)

y para comenzar el hilo, estoy creando esta instancia de clase (este hilo de inicio también) en otra clase

Respuestas a la pregunta(3)

Su respuesta a la pregunta