よもやまのC#時折CPP

MFC,C# .Net,CPP,and ....

目次

Blog 利用状況

ニュース

わんくま同盟

わんくま同盟

投稿カレンダー

iKnow始めました

書庫

日記カテゴリ

スレッド

MFCでのスレッド生成とのギャップを埋めるべく・・
そして、AutoResetEvent、ManualResetEventの動作・性質の違いを見いだせないまま・・
※コードが長いため省略しています。

        protected static ManualResetEvent m_Idle = new ManualResetEvent(false);
        protected static ManualResetEvent m_Command = new ManualResetEvent(false);
        protected static ManualResetEvent m_Exit = new ManualResetEvent(false);

        public void ThreadRun()
        {
            WaitHandle[] WaitEvents = new WaitHandle[] {
                m_Idle,
                m_Command,
                m_Exit
            };
            while (true)
            {
                int nWE_Index = ManualResetEvent.WaitAny(WaitEvents);
                if (nWE_Index == 2)
                {
                    break;
                }
                switch (nWE_Index)
                {
                    case 0: ///IDLE
                        ProcIdle(nWE_Index);
                        break;
                    case 1: ///command
                        ProcCommand(nWE_Index);
                        break;
                }
            }
            //後始末
            WaitEvents[0].Close();
            WaitEvents[1].Close();
            WaitEvents[2].Close();
        }
WaitForMultipleObjectsExを使ったハンドシェイク通信をベースとしたのだが・・
なんだかピントこない。。
C#.Netというか、.Netを頭の中で消化できてない気がしてます。

機械相手に通信プログラムを組む事もあるのでWaitForMultipleObjectsExは重宝しています。
MFCのままでも良いのでは?という心の中で葛藤してる今日このごろ(汗

投稿日時 : 2007年8月31日 22:38

コメントを追加

# re: スレッド 2007/09/01 1:05 シャノン

んー。

AutoResetは、シグナル状態になった時に待っていたスレッドを全部解放したら、勝手に非シグナル状態になるイベント。
ManualResetは、一度シグナル状態になったら、明示的に非シグナル状態にするまでずーっとシグナル状態なイベント。

であってる?

# 追伸:はじめまして。

# re: スレッド 2007/09/01 1:27 よもやま

はじめましてー
先ほど自分の作成したコードで確認しました
確かにManualResetだと明示的に他のイベントに対してSetをし、自分をResetしてました。
今後ともよろしくお願いいたします。

# re: スレッド 2007/09/02 14:55 とっちゃん

>シャノンさん

ちょっと違ってないかな?
AutoReset は、複数待ちがあっても任意のひとつだけだったはず。
Manual はシグナル状態が維持されるので、複数まってれば全部解放(ただし、Resetされる前までw)になってるはず。

って、Native と同じなら...ですけどw

>MFCのままでも良いのでは?という心の中で葛藤してる今日このごろ(汗

そんな時には、C++/CLI。
っていうか、MFCで作ってるんだとしたら移行は面倒なだけじゃ?w

.NET(含むWPF)じゃなきゃってほとんどないし...w

タイトル  
名前  
URL
コメント