コード例 #1
0
ファイル: Bonanza.cs プロジェクト: leontius/Ragnarok
        /// <summary>
        /// ボナンザを停止します。
        /// </summary>
        public void Abort(AbortReason reason, int millis = 500)
        {
            using (LazyLock())
            {
                this.aborted = true;

                // 初期化されていなければ、そのまま帰ります。
                if (!this.initialized)
                {
                    return;
                }

                WriteCommand("quit");

                // ボナンザプロセスを終了します。
                var process = this.bonaProcess;
                if (process != null)
                {
                    if (!process.WaitForExit(millis))
                    {
                        process.Kill();
                    }

                    this.bonaProcess = null;
                }

                if (this.writeThread != null)
                {
                    this.writeThread.Join(0);
                    this.writeThread = null;
                }

                if (this.readThread != null)
                {
                    this.readThread.Join(0);
                    this.readThread = null;
                }

                if (this.errorReadThread != null)
                {
                    this.errorReadThread.Join(0);
                    this.errorReadThread = null;
                }

                this.initialized = false;
                IsConnected      = false;
                AbortedReason    = reason;
            }

            Aborted.SafeRaiseEvent(this, new BonanzaAbortedEventArgs(reason));
        }