¿Podría alguien introducir un caso de uso para el método AutoResetEvent.Reset()? ¿Cuándo y por qué me gustaría utilizar este método? Entiendo WaitOne and Set, pero esto no está claro para mí.AutoResetEvent Restablecer método
Respuesta
Sí, el AutoResetEvent
restablecerá automáticamente su estado cada vez que se señale un hilo que está esperando el evento. Sin embargo, es posible que un evento dado ya no sea válido y ningún hilo haya esperado en un AutoResetEvent
desde que se configuró originalmente. En ese escenario el método Reset
vuelve útil
Pero, ¿cuál es el beneficio de llamar a Reset() en tal caso? – anth
@ an evita que cualquier subproceso que aún no ha llamado a esperar, pero que en algún momento en el futuro, se active para un evento que ya no sea válido. Nota: Esto en sí mismo no es suficiente para evitar una condición de carrera, pero puede ser parte de una solución más grande – JaredPar
Parece que se acaba de heredar de EventWaitHandle. ¿Probablemente más útil con el ManualResetEvent que también hereda de esa clase?
Debe usar ManualResetEvent al usar Restablecer(), ya que AutoResetEvent se reinicia cuando se marca un hilo.
El método se hereda de la clase base EventWaitHandle
y se utiliza para (re) establecer un AutoResetEvent
en su estado "bloqueado".
Dado que AutoResetEvent
entrará automáticamente en ese estado tan pronto como se indique, normalmente nunca verá este método utilizado en el código, pero para otras clases derivadas de EventWaitHandle
sería mucho más útil.
Si el productor de AutoResetEvent desea borrar el evento, usaría Restablecer(). De esta forma, puede "reiniciar" el evento sin tener que saber si está señalizado. Si el productor usó WaitOne para "restablecer" su propio evento, existe el riesgo de que se bloquee (es decir, nunca regrese, ya que el evento no se señaliza y el hilo productor está bloqueado).
Restablecer:
establece el estado del evento que no señalizado , Ver EventWaitHandle Class
la muestra,
using System;
using System.Threading;
namespace ThreadingInCSharp.Signaling
{
class Program
{
static EventWaitHandle _waitHandle = new AutoResetEvent(false);
static void Main(string[] args)
{
//The event's state is Signal
_waitHandle.Set();
new Thread(Waiter).Start();
Thread.Sleep(2000);
_waitHandle.Set();
Console.ReadKey();
}
private static void Waiter()
{
Console.WriteLine("I'm Waiting...");
_waitHandle.WaitOne();
//The word pass will print immediately
Console.WriteLine("pass");
}
}
}
Uso Rese t,
using System;
using System.Threading;
namespace ThreadingInCSharp.Signaling
{
class Program
{
static EventWaitHandle _waitHandle = new AutoResetEvent(false);
static void Main(string[] args)
{
//The event's state is Signal
_waitHandle.Set();
_waitHandle.Reset();
new Thread(Waiter).Start();
Thread.Sleep(2000);
_waitHandle.Set();
Console.ReadKey();
}
private static void Waiter()
{
Console.WriteLine("I'm Waiting...");
_waitHandle.WaitOne();
//The word will wait 2 seconds for printing
Console.WriteLine("pass");
}
}
}
- 1. Comprobar el estado AutoResetEvent
- 2. ¿Cómo crear el evento autoresetevent en C?
- 3. Alternativa ligera a Manual/AutoResetEvent en C#
- 4. AutoResetEvent frente a boolean para detener un hilo
- 5. Método de traducción HTML5, cómo restablecer a los valores predeterminados?
- 6. ¿Cuándo usaría AutoResetEvent y ManualResetEvent en lugar de Monitor.Wait()/Monitor.Pulse()?
- 7. ¿Cuál es el equivalente de C++ para AutoResetEvent en Linux?
- 8. Restablecer Resistencia
- 9. Restablecer ItemNumbered
- 10. Restablecer System.Lazy
- 11. Restablecer o borrar .NET MemoryStream
- 12. ORMLite restablecer todas las tablas
- 13. RhinoMocks: Borrar o restablecer AssertWasCalled()
- 14. - Recuperable (Restablecer contraseña)
- 15. Restablecer Homebrew Formula
- 16. Restablecer UISearchbar programmatically
- 17. ¿Cómo puedo restablecer table.DefaultView.RowFilter?
- 18. Restablecer Consola IRB
- 19. Restablecer ENTRADA sin FORM
- 20. Restablecer Redis "used_memory_peak" stat
- 21. Restablecer TinyMCE box
- 22. Cómo restablecer JSESSIONID
- 23. SQL Azure Restablecer autoincrement
- 24. Ifstream - Restablecer bit EOF
- 25. Rails Login Restablecer sesión
- 26. Cómo restablecer un diccionario
- 27. Restablecer desplazamiento en ScrollView
- 28. ¿Restablecer autoincrement ID? phpmyadmin
- 29. Python Spyder restablecer
- 30. truco para restablecer odbc_error()
¿Por qué votar a cerrar? Esta pregunta me parece perfectamente clara y útil ... –