【C#】WinForm アプリケーション作成時のお約束
VS2019で、WinForm アプリケーションを作成するときに、お決まり事のように行う作業がある。
まずあ、ネットワーク機能が搭載される場合には”ほぼ”必須となっているTLS1.2対応。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
どこに記述するのがいいのかは、アプリケーションの性質にはよるが、呪文なので、Program.cs でよいと考えている。
そして、アプリケーションの性質上。一つだけしかたちあげたくない場合には、Mutexを設定して、アプリケーションが起動状態にあるのか確認する方法がある。タスクを調べたり、Widowハンドルを調べる方法もあるが、個人的にはMutexを使う方法をよく使う。ハンドル操作は、最近の高性能なパソコンだけを相手にしているのならいいが、低スペックなパソコンやアプリケーションを大量に起動している場合には、起動時に一呼吸タイミングができてしまう。
//Mutex名を決める(必ずアプリケーション固有の文字列に変更すること!) string mutexName = "必ずアプリケーション固有の文字列に変更すること!"; //Mutexオブジェクトを作成する System.Threading.Mutex mutex = new System.Threading.Mutex(false, mutexName); bool bHandle = false; try { try { //ミューテックスの所有権を要求する bHandle = mutex.WaitOne(0, false); } catch (System.Threading.AbandonedMutexException) //.NET Framework 2.0以降の場合 { //別のアプリケーションがミューテックスを解放しないで終了した時 bHandle = true; } //ミューテックスを得られたか調べる if (bHandle == false) { //得られなかった場合は、すでに起動していると判断して終了 MessageBox.Show("得られなかった場合は、すでに起動していると判断して終了"); return; } else { //はじめからMainメソッドにあったコードを実行 Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); // 起動パラメータのチェックはハンドル操作を行う場合起動するフォームに情報を渡す。 //Application.Run(new frmMain(bHandle)); Application.Run(new frmMain()); } } finally { if (bHandle) { //ミューテックスを解放する mutex.ReleaseMutex(); } mutex.Close(); }
これもおまじないです。
F1&雑談
小説
開発
静岡
小説やプログラムの宣伝
積読本や購入予定の書籍の情報を投稿しています
小説/開発/F1&雑談アカウントは、フォロバを返す可能性が高いアカウントです
積読本や購入予定の書籍の情報を投稿しています
小説/開発/F1&雑談アカウントは、フォロバを返す可能性が高いアカウントです