C#捕获windows关机事件,在系统关机前做一些自己想做的事的示例代码
C#捕获windows关机事件,在系统关机前做一些自己想做的事;
有些时候我们可能想在Windows关机时记录或处理一些事情,这里提供几种方法。
方法一:
/// <summary> /// 窗口过程的回调函数 /// </summary> /// <param name="m"></param> protected override void WndProc(ref Message m) { switch (m.Msg) { //此消息在OnFormClosing之前 case WindowsMessage.WM_QUERYENDSESSION: //MessageBox.Show("WndProc.WM_QUERYENDSESSION.我要阻止系统关闭!"); //this.Close(); //this.Dispose(); //Application.Exit(); m.Result = (IntPtr)1; //阻止Windows注销、关机或重启 break; default: break; } base.WndProc(ref m); }
方法二:
protected override void OnFormClosing(FormClosingEventArgs e) { switch (e.CloseReason) { case CloseReason.ApplicationExitCall: e.Cancel = true; MessageBox.Show("拦截关闭要求事件!"); break; case CloseReason.FormOwnerClosing: e.Cancel = true; MessageBox.Show("拦截自身关闭事件!"); break; case CloseReason.MdiFormClosing: e.Cancel = true; MessageBox.Show("拦截MDI窗体关闭事件!"); break; case CloseReason.None: break; case CloseReason.TaskManagerClosing: e.Cancel = true; MessageBox.Show("拦截任务管理器关闭事件!"); break; case CloseReason.UserClosing: //注销或关机会触发此事件; //MessageBox.Show("拦截用户关闭事件!"); e.Cancel = false; break; case CloseReason.WindowsShutDown: e.Cancel = true; MessageBox.Show("拦截关机事件!"); break; default: break; } base.OnFormClosing(e); }
方法三:
//当用户试图注销或关闭系统时发生。 SystemEvents.SessionEnding += new SessionEndingEventHandler(SystemEvents_SessionEnding); //下面是系统注销或关闭事件处理程序, private void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e) { if (MessageBox.Show(this, "是否允许系统注销!", "系统提示", MessageBoxButtons.YesNo) != DialogResult.Yes) { e.Cancel = true; } else { e.Cancel = false; } SessionEndReasons reason = e.Reason; switch (reason) { case SessionEndReasons.Logoff: MessageBox.Show("用户正在注销。操作系统继续运行,但启动此应用程序的用户正在注销。"); break; case SessionEndReasons.SystemShutdown: MessageBox.Show("操作系统正在关闭。"); break; } } //如果把上面的事件处理程序修改成如下 //private void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e) // { // e.Cancel = true; // } //那会出现什么情况,你点击开始菜单关机选择注销、关机、或重新启动将会失效,电脑不能正常关机了,进一步的话把程序做成Windows服务,晕,恶作剧? //SessionEnded事件同上,事件参数类为SessionEndedEventArgs,同SessionEndingEventArgs相比少了Cancel属性,Cancel属性同一些windows下的某些事件差不多, 比如Form.Closing事件,Control.Validating事件。 //补充,如果需要获取应用程序需要的系统信息,可以访问System.Windows.Forms.SystemInformation类,这也是一个很有用的类,它提供了一组静态属性。
Atas ialah kandungan terperinci C#捕获windows关机事件,在系统关机前做一些自己想做的事的示例代码. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Perbezaan antara multithreading dan asynchronous adalah bahawa multithreading melaksanakan pelbagai benang pada masa yang sama, sementara secara tidak sengaja melakukan operasi tanpa menyekat benang semasa. Multithreading digunakan untuk tugas-tugas yang berintensifkan, sementara asynchronously digunakan untuk interaksi pengguna. Kelebihan multi-threading adalah untuk meningkatkan prestasi pengkomputeran, sementara kelebihan asynchronous adalah untuk tidak menghalang benang UI. Memilih multithreading atau asynchronous bergantung kepada sifat tugas: tugas-tugas intensif pengiraan menggunakan multithreading, tugas yang berinteraksi dengan sumber luaran dan perlu menyimpan respons UI menggunakan asynchronous.

Gunakan kebanyakan editor teks untuk membuka fail XML; Jika anda memerlukan paparan pokok yang lebih intuitif, anda boleh menggunakan editor XML, seperti editor XML oksigen atau XMLSPY; Jika anda memproses data XML dalam program, anda perlu menggunakan bahasa pengaturcaraan (seperti Python) dan perpustakaan XML (seperti XML.Etree.ElementTree) untuk menghuraikan.

Multithreading dalam bahasa dapat meningkatkan kecekapan program. Terdapat empat cara utama untuk melaksanakan multithreading dalam bahasa C: Buat proses bebas: Buat pelbagai proses berjalan secara bebas, setiap proses mempunyai ruang ingatan sendiri. Pseudo-Multithreading: Buat pelbagai aliran pelaksanaan dalam proses yang berkongsi ruang memori yang sama dan laksanakan secara bergantian. Perpustakaan multi-threaded: Gunakan perpustakaan berbilang threaded seperti PTHREADS untuk membuat dan mengurus benang, menyediakan fungsi operasi benang yang kaya. Coroutine: Pelaksanaan pelbagai threaded ringan yang membahagikan tugas menjadi subtask kecil dan melaksanakannya pada gilirannya.

Walaupun C dan C# mempunyai persamaan, mereka sama sekali berbeza: C adalah pengurusan memori yang berorientasikan proses, dan bahasa yang bergantung kepada platform yang digunakan untuk pengaturcaraan sistem; C# adalah bahasa berorientasikan objek, sampah, dan bahasa bebas platform yang digunakan untuk desktop, aplikasi web dan pembangunan permainan.

C#.NET menyediakan alat yang berkuasa untuk pengaturcaraan serentak, selari dan multithreaded. 1) Gunakan kelas benang untuk membuat dan menguruskan benang, 2) kelas tugas menyediakan abstraksi yang lebih maju, menggunakan kolam benang untuk meningkatkan penggunaan sumber, 3) melaksanakan pengkomputeran selari melalui selari.foreach, 4) async/menunggu dan tugas.

Cara berikut untuk mengelakkan "terjebak" multithreading di C#: Elakkan operasi memakan masa pada benang UI. Gunakan tugas dan async/menunggu untuk melaksanakan operasi yang memakan masa secara asynchronously. Kemas kini UI pada benang UI melalui Application.Current.dispatcher.invoke. Gunakan pembatalanToken untuk mengawal pembatalan tugas. Buat penggunaan rasional kolam benang untuk mengelakkan penciptaan benang yang berlebihan. Perhatikan kebolehbacaan kod dan kebolehkerjaan, menjadikannya mudah untuk debug. Log direkodkan dalam setiap benang untuk debugging mudah.

Terdapat tiga cara untuk menukar XML ke Word: Gunakan Microsoft Word, gunakan penukar XML, atau gunakan bahasa pengaturcaraan.

Menyelesaikan masalah Permulaan Photoshop Perlahan memerlukan pendekatan berbilang arah, termasuk: menaik taraf perkakasan (memori, pemacu keadaan pepejal, CPU); menyahpasang pemalam yang sudah lapuk atau tidak serasi; membersihkan sampah sistem dan program latar belakang yang berlebihan dengan kerap; menutup program yang tidak relevan dengan berhati -hati; Mengelakkan membuka sejumlah besar fail semasa permulaan.
