无法从c#中的线程类继承
本文关键字:线程 继承 | 更新日期: 2023-09-27 18:14:25
类Thread
是一个密封类,这意味着它不能被继承,我需要一个可重用的Thread
的实例,它应该继承自Thread类。有没有人知道如何重用胎面?
正如您自己所指出的,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
}
}
你懂的。
使用继承的一个更好的替代方法是使用组合。创建你的类,并拥有一个Thread
类型的成员。然后将类的方法映射为调用Thread成员的方法,并添加您可能希望的任何其他方法。例子:
public class MyThread
{
private Thread thread;
// constructors
public void Join()
{
thread.Join();
}
// whatever else...
}