我陷入了如下情况。
我正在尝试使用委托从 Dispatcher.BeginInvoke 调用派生类重写函数。但是委托总是调用基类的虚方法而不是派生类的重写方法。
如何解决问题?
下面是我的伪代码:
class BaseClass
{
public BaseClass() { }
public virtual void DoWork(int i)
{
//do nothing
}
}
class DerivedClass : BaseClass
{
public DerivedClass() { }
public override void DoWork(int i)
{
MessageBox.Show((i + 2).ToString());
}
}
public delegate void delDoWork(int i);
class SomeClass
{
private void SomeMethod()
{
oDerived = new DerivedClass();
ThreadStart ts = delegate
{
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Normal,
new delDoWork(oDerived.DoWork), i);
};
new Thread(ts).Start();
}
}