*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

<C#>
簡易Webサーバーのマルチスレッド化 < 受信受け付け終了処理対応版 >」のコード No.3


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

.






元のページ


元ページ「<C# > 簡易Webサーバーのマルチスレッド化 < 受信受け付け終了処理対応版 >」
http://note.chiebukuro.yahoo.co.jp/detail/n323031

記述量上限の制限で、ページを分けて記述しています。





本ページの前のページ


「簡易Webサーバーのマルチスレッド化 < 受信受け付け終了処理対応版 >」のコード No.2
http://note.chiebukuro.yahoo.co.jp/detail/n323834

記述量上限の制限で、ページを分けて記述しています。





本ページの次のページ


「簡易Webサーバーのマルチスレッド化 < 受信受け付け終了処理対応版 >」のコード No.4
http://note.chiebukuro.yahoo.co.jp/detail/n323836

記述量上限の制限で、ページを分けて記述しています。







はじめに


元ページの「<C#> 簡易Webサーバーのマルチスレッド化 < 受信受け付け終了処理対応版 >」におけるコードをここに記述します。








簡易Webサーバークラスのソースコード





using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace LightweightWebServerThreadStep2

{

    // ************************

    // 簡易Webサーバークラス

    // ************************

    public partial class LightweightWebServer

    {




        //========================

        // 受信受け付け開始メソッド

        public void StartToListen()

        {


            string Log_Message; // エラーメッセージ格納用オブジェクト



            if (!SLTAlive)  // まだ接続待ちスレッドを生成していない場合

            {


                if (ThreadData.listener == null)

                {

                    // リスナー(受け付け用機能)の生成

                    ThreadData.listener = new System.Net.HttpListener();



                    // URIプレフィックス設定

                    int Error_Info = SetPrefix(ref ThreadData);

                }



                // 受け付け開始

                ThreadData.listener.Start();



                // 接続待ち用スレッドを作成

                ListeningCallbackThread = new System.Threading.Thread(ListeningCallback);



                // 接続待ち用スレッドを開始

                ListeningCallbackThread.Start(ThreadData);



                // スレッド終了指示フラグを未終了に設定

                SLTAlive = true;


            }


        }





        //========================

        // 受信受け付け終了

        public void StopListening()

        {

            if (SLTAlive)  // 接続待ちスレッドが作成されていて使える場合

            {


                if (ThreadData != null)

                {

                    if (ThreadData.listener != null)

                    {

                        // リスナーの受け付け終了

                        // (接続要求受け入れの終了)

                        ThreadData.listener.Stop();

                        ThreadData.listener.Close();

                        ThreadData.listener = null;

                    }

                }



                // スレッド終了指示フラグを終了に設定

                SLTAlive = false;



                // *** // ログ情報格納用キューのロック/解放待ち

                // *** //  他のスレッドがキューをアクセスしていない場合 ---> キューのロック

                // *** //  他のスレッドがキューをアクセスしている場合   ---> キューの解放待ち

                // *** System.Threading.Monitor.Enter(LogMessageQue);

                // *** // メッセージをログ出力します。

                // *** LogMessageQue.Enqueue("サーバー終了");

                // *** // キューを解放

                // *** System.Threading.Monitor.Exit(LogMessageQue);


            }

        }



    }

}





さいごに


本ページの内容説明については、元ページを参照して下さい。