La clase Thread
es una clase sellada lo que significa que no se puede heredar de y necesito una instancia de Thread
reutilizable que debe heredar de la clase Thread. ¿Alguien tiene una idea de cómo puedo reutilizar la banda de rodadura?¿No se puede heredar de una clase de subprocesos en C#?
7
A
Respuesta
20
Como usted mismo ha anotado, Thread
es una clase cerrada. Obviamente, esto significa que no puedes heredar de él. Sin embargo, puede crear su propia clase BaseThread
que puede heredar y anular para proporcionar una funcionalidad personalizada usando Composition.
abstract class BaseThread
{
private Thread _thread;
protected BaseThread()
{
_thread = new Thread(new ThreadStart(this.RunThread));
}
// Thread methods/properties
public void Start() => _thread.Start();
public void Join() => _thread.Join();
public bool IsAlive => _thread.IsAlive;
// Override in base class
public abstract void RunThread();
}
public MyThread : BaseThread
{
public override void RunThread()
{
// Do some stuff
}
}
Se le ocurre la idea.
+0
¡Sí! ¡¡Déjame intentarlo!! – Xris
4
Una alternativa preferible al uso de herencia es usar Composición. Cree su clase y tenga un miembro del tipo Thread
. Luego mapea los métodos de tu clase para llamar a los métodos del miembro Thread y agrega cualquier otro método que desees. Ejemplo:
public class MyThread
{
private Thread thread;
// constructors
public void Join()
{
thread.Join();
}
// whatever else...
}
Cuestiones relacionadas
- 1. Python: no se puede heredar de una extensión C
- 2. ¿Se puede extender (heredar) una clase no abstracta en Java?
- 3. ¿Puede una clase anidada de C++ heredar su clase adjunta?
- 4. ¿Puede una clase C# heredar atributos de su interfaz?
- 5. En C#, ¿puede una clase heredar de otra clase y una interfaz?
- 6. ¿No se puede heredar de varias clases que definen __slots__?
- 7. ¿Por qué una clase C# puede heredar de una interfaz de manera implícita y explícita?
- 8. ¿Cómo heredar una clase de C++ en JavaScript?
- 9. ¿Cómo se puede heredar de una clase sellada usando la reflexión en .Net?
- 10. Jackson + Tomcat - java.lang.VerifyError: No se puede heredar de la clase final
- 11. ¿Puede una clase simulada heredar de otra clase simulada en googlemock?
- 12. ¿Cómo puede la clase derivada heredar una función estática de la clase base?
- 13. Heredar de una clase o una clase abstracta
- 14. Cómo definir una clase debe heredar
- 15. Reglas para heredar clase
- 16. ¿Cómo puede una clase PHP que se extiende a otra heredar una función privada?
- 17. ¿Cómo puede heredar una clase de una plantilla basada en sí misma?
- 18. ¿Cómo se puede derivar una clase estática de un objeto?
- 19. C++: "error: nombre de clase esperado antes de '{' token" al heredar una clase de plantilla
- 20. ¿Cómo se implementa el patrón Decorator si no se puede heredar de la clase que se desea decorar?
- 21. ¿Heredar documentación en C#?
- 22. ¿Cómo puedo heredar el resumen de C# en otra clase? (Como heredar Javadoc)
- 23. C#: Cómo probar una clase de trabajador con subprocesos básicos
- 24. ¿Cómo se puede heredar un método de fábrica genérico?
- 25. Heredar de una clase base genérica, aplicar una restricción e implementar una interfaz en C#
- 26. No se puede operar ObservableCollection en varios subprocesos
- 27. ¿Cuándo heredar de una clase te duele más tarde?
- 28. ¿Es posible agregar comportamiento a una clase de ActionScript 3 no dinámica sin heredar la clase?
- 29. ¿Hay alguna manera de limitar quién puede heredar una clase o interfaz?
- 30. ¿Qué métodos puede heredar una subclase en Java?
Prueba con la composición? – Erix
¿Qué sentido tiene un hilo reablegable cuando un hilo no es reutilizable desde el punto de vista operativo? – TomTom
¿Por qué no usas ThreadPool en su lugar? –