0

現在、コンテンツをファイルに書き込む必要がある ac# プロジェクトに取り組んでいます。ファイルが書き込まれている間、別のスレッドがファイルにアクセスしてファイルサイズを取得するため、ファイルに書き込んでいるときに、ファイルサイズチェックでファイルがロックされているため、ファイルがロックアウトされることがあります。

私が考えていたのは、ある種のバッファを作成することですが、グーグルで検索するたびに、すべてがローカルであるため適切ではないネットワークストリームについて戻ってきます。スレッドがファイルに直接書き込むのではなく、何らかのバッファーに書き込み、別のスレッドがファイルが書き込み可能かどうかを確認してから、バッファーを読み取り、内容をファイルに書き込みます。

もう1つの問題は、プログラムが複数の場所から入力を受け取っているため、ファイルに書き込むときに正しいファイルに書き込むようにパラメーターを追加する必要があるため、この値をバッファーのどこかに保持する必要があることです。ストリームに見られるように、文字列のみを書き込むことができます。

したがって、基本的な問題は、バッファに書き込み、バッファから読み取ってファイルに書き込み、パラメータをバッファ内に保持して、ファイルに書き込むときにどのファイルに書き込むかを知る方法です。

ご協力いただきありがとうございます。

4

2 に答える 2

0

バッファ スペースとファイル仕様を持つクラスを宣言します。書き込みごとに 1 つ作成し、それを BackgroundWorker 書き込みスレッドのキューに入れます。スレッドはバッファー インスタンスをデキューし、適切な sleep() ループ etry を使用してファイルを書き込み、一時的なファイル ロックが回避されるようにします。

キューに BlockingCollection を使用できます。

于 2012-04-21T20:52:03.320 に答える
0

ファイルの長さを取得しても、ファイルはロックされません。その操作はどうしていますか?

バッファを使用すると、長さチェック操作で正しい値が得られなくなります。

于 2012-04-21T20:56:59.433 に答える