この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 24385|答える: 4

[出典] C#プログラムは正しいコードを実行できるインスタンスを1つだけ許可します

[リンクをコピー]
掲載地 2016/12/10 14:55:50 | | | |


私はコンピューターを一度だけ動かしたい交通監視ソフトを書きました。そのコードは以下の通りです:



すぐに見つけて、ソフトウェアをクリックすると「インスタンスが実行されました」と表示されますが、30秒待ってからソフトウェアをクリックすると、また正常に動作しますある時!!

残念だ。上記のコードはDEBUGモードでは問題ありませんが、リリースでは動作しません。
問題は、Mutexがローカル変数として宣言されており、最適化の問題からreleseモードで宣言されていることです。おそらくコンパイラがMutexが使われていないと判断しているためです

使い古され、リサイクルされ、自分で検査された。

Mutexを上に置き、静的変数として設定!!コードは以下の通りです:





スコア

参加者数1MB+1 貢献する+1 倒れる 理由
学ぶのが大好きな小さな初心者 + 1 + 1 一つみたいに!

すべての評価を見る





先の:C#はアプリケーションインスタンスの正しく書くことだけを許可します
次に:ソフトウェアの自動起動の設定方法。
 地主| 掲載地 2016/12/10 15:02:58 |
静的フィールドはGCによってリサイクルされず、静的フィールドはLoaderヒープに割り当てられ、非GCヒープはGCによって制御されません。

静的メンバー(静的クラスの有無にかかわらず)は、AppDomain.UnLoadに到達したときにのみ再利用されます。 静的クラスは静的メンバーのみを持てる
掲載地 2017/12/06 11:48:05 |
学びました、共有してくれてありがとうございます
 地主| 掲載地 2018/02/23 14:59:01 |
その他の実装例:

スタートアップ方法:



 地主| 掲載地 2025/10/03 16:10:11 |
.NET/C#はMutexとMemoryMappedFileに基づくプログラムのシングルトンを実装しています
https://www.itsvse.com/thread-10808-1-1.html
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com