En mi aplicación, estoy realizando la lectura de mi archivo por otro hilo (otro hilo de GUI). Hay dos botones que suspenden y reanudan el subproceso, respectivamente.C# Threading.Suspend in Obsolete, thread was obsoleto?
private void BtnStopAutoUpd_Click(object sender, EventArgs e)
{
autoReadThread.Suspend();
}
private void BtnStartAutoUpd_Click(object sender, EventArgs e)
{
autoReadThread.Resume();
}
pero estoy frente a esta advertencia,
Thread.suspend ya no se utiliza. Utilice otras clases en System.Threading, como Monitor, Mutex, Evento y Semáforo, para sincronizar Subprocesos o proteger recursos. http://go.microsoft.com/fwlink/?linkid=14202
De todos modos, como solo ejecuto un hilo (en lugar de un hilo GUI), entonces ¿cómo puedo aplicar la Sincronización aquí, o monitorizarlo?
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;
//}
}
}
}
}
}
de ejecución es el valor booleano, un hilo de lo controla (Inicialmente su verdadero)
y al iniciar el subproceso que estoy creando esta instancia de clase (este comienzo hilo también) en otra clase
Usted actualiza no muestra: a) Cómo se inicia su subproceso, b) el método de subproceso completo. – jgauffin
InvocarRequired es siempre cierto. Su hilo no hace nada útil, todo se ejecuta en el hilo de la interfaz de usuario. –