遍匈 鮒簡 忖灸 医烏 鞘徨 兆冱 嗔基 潜崗 僥丕 利嫋仇夕
輝念了崔: 遍匈 > 縮殻撞祇 > .NET > C# >

Form_Closing、Form_Unloadイベントでの箭翌は畠てハンドリングし、K阻するようにする。イベントからイベントハンドラを翌しK阻。竃栖る申眈房

2012-04-05 
Form_Closing、Form_Unloadイベントでの箭翌は畠てハンドリングし、K阻するようにする。イベントからイベントハンドラを翌しK阻。竃栖る拭魥敞檗Ma

Form_Closing、Form_Unloadイベントでの箭翌は畠てハンドリングし、K阻するようにする。イベントからイベントハンドラを翌しK阻。竃栖る
‐魥敞檗
MainMenuInvoker.Application_ThreadExceptionで、Application.Exitを佩っているが、
Form.Closingイベントがk伏してしまう蕁▲ぅ戰鵐肇魯鵐疋蕕鰺發靴峠K阻させるか、
崙K阻するように俐屎する。

箔廁奕担肇閲窒並周

[盾畳一隈]
云附字崙祥頁宸劔議泌惚低音覺シ議三辛參完悶旗鷹戦紗倖畠蕉延楚泌
bool isExit = false;

輝application.exit();朔
羨瀧亟匯鞘isExit =true;

隼朔壅Form1_FormClosing戦
紗訳if(isExit == false ){..........}
宸劔祥麻咀葎application.exit();乾窟阻Closing並周
匆咀葎厮将isExit= true遇音氏距喘if(isExit == false ){..........}
宸倖雑凄催戦中議旗鷹阻
[盾畳一隈]
.NET頁芦畠旗鷹音屶隔勣岷俊購液殻會峪嬬喘API販採.NET旗鷹脅涙隈汎狛低侭峺議並周。

C# code
        [Flags]        public enum ProcessAccessFlags : uint        {            All = 0x001F0FFF,            Terminate = 0x00000001,            CreateThread = 0x00000002,            VMOperation = 0x00000008,            VMRead = 0x00000010,            VMWrite = 0x00000020,            DupHandle = 0x00000040,            SetInformation = 0x00000200,            QueryInformation = 0x00000400,            Synchronize = 0x00100000        }        [DllImport("kernel32.dll")]        static extern IntPtr OpenProcess(ProcessAccessFlags dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, uint dwProcessId);        [DllImport("kernel32.dll", SetLastError = true)]        [return: MarshalAs(UnmanagedType.Bool)]        static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode);        [DllImport("kernel32.dll", SetLastError = true)]        [return: MarshalAs(UnmanagedType.Bool)]        static extern bool GetExitCodeProcess(IntPtr hProcess, out uint lpExitCode);        private void KillProcess(string processId,string processName)        {            IntPtr killer;            try            {                killer = OpenProcess(ProcessAccessFlags.All, false, uint.Parse(processId));                MessageBox.Show(killer.ToString());                uint exitcode = 0;                bool ret = GetExitCodeProcess(killer, out exitcode);                ret = TerminateProcess(killer, exitcode);                if (ret)                    MessageBox.Show(string.Format("撹孔購液殻會{0}。", processName));                else                {                    exitcode = 0;                    MessageBox.Show(string.Format("姫棒序殻{0}扮払移圻咀音苧。", processName));                }            }            catch (Exception Exc)            {                MessageBox.Show(string.Format("姫棒序殻{0}扮払移圻咀頁{1}。", processName, Exc.Message));            }        } 

犯泣電佩