无法从C#中的Thread类继承?

Xri*_*ris 10 c#

该类Thread是一个密封类,意味着它不能继承,我需要一个Thread应该从Thread类继承的可重用实例.有谁知道如何重复使用胎面?

ros*_*dia 26

正如你自己指出的那样,Thread是一个密封的课程.显然这意味着你不能继承它.但是,您可以创建自己的BaseThread类,您可以继承并覆盖它以使用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 MyThread()
        : base()
    {
    }

    public override void RunThread()
    {
        // Do some stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

你明白了.


Tud*_*dor 5

使用继承的更好替代方法是使用组合。创建您的类并拥有类型为 的成员Thread。然后映射类的方法以从 Thread 成员调用方法,并添加您可能希望的任何其他方法。例子:

public class MyThread 
{
    private Thread thread;
    // constructors

    public void Join()
    {
        thread.Join();
    }

    // whatever else...
}
Run Code Online (Sandbox Code Playgroud)