別の質問では、はい、文書化されていない の値でCreateDirectory
失敗することがあり、状況を処理する正しい方法はおそらく数回再試行することであることがわかりました。このようなアルゴリズムを実装するのは簡単ですが、再現方法がわからない場合にテストするのはそれほど簡単ではありません。GetLastError
ERROR_ACCESS_DENIED
なぜこれが起こるのかについての理論は必要ありません。Windowsのバグかもしれませんね。また、設計による場合もあります。最終的には、Microsoft が動作を出荷したため、この時点では問題ではなく、対処する必要があります。
また、マルチタスク オペレーティング システムの理論と、Windows での一般的な実装方法についても説明する必要はありません。システムソフトウェアを書いて生計を立てています。私は他にほとんど理解していません。
私が今必要としているのは、失敗を再現するための信頼できる方法です。これにより、対処するコードのテスト ケースを作成できます。これが私がこれまでに試したことです:
-
私はテスト プログラム P1 を作成しました。このプログラムは、親となるオブジェクトの内容をゆっくりと繰り返し列挙します。同様に、親になる予定のディレクトリの削除と作成を繰り返し試行するだけのテスト プログラム P2 を作成しました。列挙を長時間開いたままにしておくと、問題が発生する可能性が高くなる可能性があると考えました。P2 を単独で実行すると、時折障害が発生します (約 10 ミリ秒の間、数分おきに発生します)。P1 と P2 を同時に実行しても、障害が頻繁に発生したり、長くなったりすることはないようです。
-
P2 の 2 つのインスタンスを同時に実行しましたが、障害が頻繁に発生したり長くなったりすることはないようです。
-
ディレクトリに加えてファイルを作成できるように P2 を変更しました。これを P1 と同時に実行しても、障害が頻繁に発生したり、長くなったりすることはないようです。
-
P1 と P2 の複数のインスタンスをすべて同時に異なるパラメーターで実行しましたが、それによって失敗が頻繁になったり長くなったりすることはないようです。
- 私は、アイテムを親となるものに出し入れするテスト プログラム P3 を作成し、P2 と同時に P3 を実行しました。
他のアイデアはありますか?