【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&雑談アカウントは、フォロバを返す可能性が高いアカウントです
