类Thread
是一个密封类,意味着它不能继承而且我需要一个可重用的Thread
实例,它应该继承自 Thread 类。有谁知道如何重复使用胎面?
答案 0 :(得分:23)
正如您自己所说,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
}
}
你明白了。
答案 1 :(得分:4)
使用继承的一个更好的替代方法是使用Composition。创建您的类并拥有类型为Thread
的成员。然后映射类的方法以从Thread成员调用方法并添加您可能希望的任何其他方法。例如:
public class MyThread
{
private Thread thread;
// constructors
public void Join()
{
thread.Join();
}
// whatever else...
}