きな粉もち.net

.NET関連仕事に携わっています。OSSのソースを読んで気がついたことを中心に呟いたりブログに投稿したりしています。最近はUiPathを使ったRPAも研究中。気軽にフォローやツッコミよろしくおねがいします! Gitはここを使っています https://github.com/kinakomotitti

log4net × Lock Model × Mutex(続き)

InterProcessLockというModelクラスの実装についての記事の続きです。

 

どのようにしてMutexを使ってロックをかけているかを順番に見ていきます。

順番は以下の通りです。

  1. ファイルオープン
  2. ロック要求 ←特にここ
  3. ロック解除  ←特にここ
  4. ファイルクローズ

1.ファイルオープン

f:id:kinakomotitti:20171104213503p:plain

特別なことはありませんが、前に紹介したStreamを生成するメソッドを実行しているだけです。

例外処理が特殊で理解が追い付いていません・・・

ただ、メッセージは個人的にしたのコメントアウトしたような書き方が好きですね。。。(どうでもいいw)

f:id:kinakomotitti:20171104213910p:plain

 

2.ロック要求

続いて、ロックを要求する処理です。

TODOが残っているあたり、今後変更されるかもしれませんね。

f:id:kinakomotitti:20171104214004p:plain

mutexのインスタンスがnull出ないときだけ処理を行い、mutexがないときは例外処理を行います。

ここで、mutexのインスタンスに処理が許可されるまで待ち続けるWaitOneメソッドを利用しています。

こうやってロックの制御を実行しているのですね!

 

3.ロック解除

f:id:kinakomotitti:20171104220940p:plain

特に気になるところがありません。。。

しっかりとMutexリリース前にフラグの制御をしているというところがあるだけでしょうか。。。

 

4.ファイルクローズ

f:id:kinakomotitti:20171104221003p:plain

シンプルですが、Streamをクローズし、Streamを格納していた変数にnullを代入して処理を終えています。

処理の最後にはロックを解除するメソッド(3.のやつ)を実行します。

 

・・・順番が微妙でしたが、ファイルを開くところと、ロックをかけるところの実装が一通り確認できました!

今後は、FileAppenderの起動処理 をメインに見ていこうと思います!