无法从C#中的Thread类inheritance?
Thread
类是一个密封类,意味着它不能inheritance而且我需要一个应该从Thread类inheritance的可重用Thread
的实例。 有谁知道如何重复使用胎面?
正如您自己所说, Thread
是一个密封的类。 显然这意味着你无法inheritance它。 但是,您可以创建自己的BaseThread
类,您可以inheritance并覆盖它以使用Composition提供自定义function。
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 } }
你明白了。
使用inheritance的一个更好的替代方法是使用Composition。 创建您的类并拥有Thread
类型的成员。 然后映射类的方法以从Thread成员调用方法并添加您可能希望的任何其他方法。 例:
public class MyThread { private Thread thread; // constructors public void Join() { thread.Join(); } // whatever else... }