1

そのため、何らかの理由でthis.Close();プログラムにコードを記述しても、実際には閉じません。プログラムで別の .exe ファイルを開いてから閉じますが、タスク マネージャーを開くと、実際にはまだバックグラウンドで実行されています。コンテキストメニューの「閉じる」オプションにもこの問題があります。理由はありますか?

編集:ボタンで終了しても、まだバックグラウンドにあります。

編集:

private void closeToolStripMenuItem_Click(object sender, EventArgs e)
{
    this.Close();
}

private void launch_Click(object sender, EventArgs e)
{
    System.Diagnostics.Process.Start(Environment.ExpandEnvironmentVariables("%AppData%\\program.exe"));
    this.Close();
}

プログラムを閉じている実際の2つのコードのみ。しかし、それはまだバックグラウンドで実行されています。実際の x ボタンを終了しても、バックグラウンドで実行されます。

4

2 に答える 2

2

作成したプロセスを閉じる必要があります。作成したプロセスを保存する変数を作成し、フォームを閉じるか別のボタンを押したときにプロセスを閉じます。参照: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.close.aspx

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        private Process _process;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this._process = Process.Start("notepad.exe");
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this._process != null) {
                this._process.CloseMainWindow();
                this._process.Close();
            }
        }
    }
}
于 2013-08-02T05:42:05.560 に答える