以下のような状況で立ち往生しています。
デリゲートを使用して、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();
}
}