[解決済み] lock(new object()) -- 貨物教団か、それともおかしな「言語の特殊性」?
2023-05-12 17:54:16
質問
私はコンサルタントによって書かれたいくつかのコードをレビューしています。何十もの赤旗がすでに現れている中、次のスニペットを理解することができません。
private void foo()
{
if (InvokeRequired)
{
lock (new object())
{
if (m_bar!= null)
Invoke(new fooDelegate(foo), new object[] { });
}
}
else
{
if(OnBazChanged != null)
OnBazChanged();
}
}
lock(new object())はここで何をしているのでしょうか?常に別のオブジェクトをロックしているので、何の影響もないはずですが、この種のロックは、コピー&ペーストされていない部分でも、コード全体にわたって永続的です。これは、私が知らない何かにコンパイルされた C# 言語の特別なケースなのでしょうか、それともプログラマーが単に、しばらく前にたまたま機能した貨物カルトを採用したのでしょうか?
どのように解決するのですか?
これを見た人がいてもおかしくはないですね。
private readonly object lockObj = new object();
private void MyMethod()
{
lock(lockObj)
{
// do amazing stuff, so amazing it can only run once at a time
// e.g. comands on the Mars Rover, or programs on iOS pre 4 / 5 ??
}
}
と、行数を減らせると思ったのでしょう。
でも、もしそうだとしたら、とても心配ですね...。
関連
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み] Typeから新しいオブジェクトのインスタンスを作成する方法
-
[解決済み】Automapper: 新しいオブジェクトを作成せずにプロパティ値を更新する
-
[解決済み】LINQ:新しいオブジェクトを作成せずに、オブジェクトを選択し、いくつかのプロパティを変更します。
-
[解決済み] Java synchronized method lock on object, or method?
-
[解決済み] なぜロックオブジェクトは静的でなければならないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】パラメータ付きRedirectToAction