1

以下のような状況で立ち往生しています。

デリゲートを使用して、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();
  }
}
4

1 に答える 1