Me gustaría crear algún método para usarlo de forma genérica, si se bloqueara (a menos que caduque cierto tiempo de espera) hasta que se cumpla una condición dada.El mejor método para "bloquear" hasta que se cumpla determinada condición
El uso de código sería algo similar a:
WaitUntil(condition);
He intentado implementarlo usando un tiempo (..) de bucle, sin embargo, esto parece un desperdicio.
En la implementación actual, estoy inicializando un temporizador 'único' que expira en TIMEOUT. Estoy ejecutando un ciclo while, y comprobando si el temporizador ha expirado o no, lanzando una excepción si lo hizo.
¿Existen técnicas simples pero efectivas para implementar dicho método?
Me gustaría ver los delegados y eventos – Joe
Mutex, Semaphore, ManualResetEvent, AutoResetEvent, CountdownEvent etc. Consulte el espacio de nombres System.Threading –
diciendo más técnicamente que desea sincronizar en algo. El sistema operativo proporciona mecanismos que permiten evitar la espera ocupada en el ciclo while. Tienen varias opciones: semáforo, sección crítica, evento manual/reinicio automático y más. Para elegir uno, debe decir cuál es la condición que está esperando. Una función genérica para la sincronización es WaitForSingleObject. – pkmiec