0

それで、タイマーイベントを作成しようとしています(今回はC++ /clrで)が、新しいイベントを定義する方法がわかりません。これが得られたものです:

namespace hook
{
    public ref class Tick
    {
    private: 
        static System::Timers::Timer^ aTimer;

    public: 
        event EventHandler^ OnTick;
        int Interval;

        Tick()
        {
            aTimer = gcnew System::Timers::Timer(Interval);
            aTimer->Elapsed += gcnew ElapsedEventHandler(Tick::execute);
        }

        static void execute(Object^ source, ElapsedEventArgs^ e)
        {
            this->OnTick(this, new EventsArg()); // Wrong
        }
    };
}
4

1 に答える 1

0

動作しない静的メソッドからインスタンス メンバー (OnTick) にアクセスしようとしています。以下を取得するには、 staticキーワードを削除します。

 void execute(Object^ source, ElapsedEventArgs^ e)

イベント サブスクリプション コードを変更する必要があるため、これを格納するデリゲートを作成する必要があります。

 aTimer->Elapsed += gcnew ElapsedEventHandler(this, &Tick::execute);

もう 1 つの間違いです。EventArgs のスペルが間違っています。Empty によって返される事前に調理されたオブジェクトを渡すことは非常に一般的です。ごみを減らします:

 this->OnTick(this, EventArgs::Empty);

値を追加せずに元のクラスを複製するだけのコードを書くことに注意してください。

于 2012-09-17T21:32:19.753 に答える