none
delegateでイベントを作ったら RRS feed

  • 質問

  • C#では、delegateでイベントを作りますが
    その作成されたイベントは別のスレッドで動作しているのでしょうか

    main-ClassA

    というのがあったとして、
    ClassAで
    delegateを使用して、イベントを作成(EVTという名前)

    mainでClassAを使用時にClassAからEVTイベントが発生。
    その場合、main内では
    ClassA_EVTの中に色々コードを書きますが、その場合は別のスレッドで動作しちゃいますか?
    2007年12月26日 12:50

すべての返信

  • 例示がよく分かってないです。

     

    コード ブロック

    class ClassA
    {
        public event EventHandler TestEvent;

        public void FireTestEvent()
        {
            TestEvent(this, EventArgs.Empty);
        }
    }

     

     

    こういった場合、FireTestEventメソッドを呼び出したスレッドでイベントは実行されます。

    メインスレッドでFireTestEventメソッドを呼び出せばメインスレッドでTestEventイベントが実行され、ワーカースレッドでFireTestEventメソッドを呼び出せばワーカースレッドでTestEventイベントが実行されます。

     

    単純なイベント自体には実行スレッドを保証する仕組みはありません。

    2007年12月26日 14:00
    モデレータ
  •  Azulean さんからの引用

    単純なイベント自体には実行スレッドを保証する仕組みはありません。

     

    イベントをRaiseしたスレッドで実行されるという保証があると思います。

    2007年12月27日 0:39