-1

私はいくつかの XML ファイルとテキスト ファイルを使用して、プライベート プロジェクトのデータを保存しています。アプリケーションを使用するのは私ともう 1 人で、正常に動作します。私が SQL データベースを使用していない理由は、質問とはあまり関係がないと思います。

読み取り/書き込みの問題を回避するために、ファイルの読み取りと書き込みを行うときは常にlock(object) {}を使用します。

問題は、さまざまな方法でパフォーマンスの問題やエラーが発生する前に、ファイルの読み取りと書き込みを行う関数を呼び出すことができるユーザーの数と、どのような問題が発生するかということです。

誰かが複数のユーザーでこれを試した場合は、答えてください。知りたいです:)

前もって感謝します!

EDIT 各ロックは 1 から 2 ミリ秒持続します。

4

2 に答える 2

2

各ユーザーが自分のコンピューターでアプリケーションを実行し、共有ドライブ上の xml ファイルにアクセスしていると仮定すると、オブジェクトのロックではなく、ファイルのロック メカニズムを使用する必要があります。Share none を使用して、読み書き用にファイルを開くことができます。

例えば:

bool success = false;
while (!success)
{
    try
    {
        using(Stream file = new FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
        {
            // Read current content from file.
            // Make changes
            // Save new content to file.
        }
        success = true;
    }
    catch(IOException e)
    {
        // Someone else was modifying the file.
        // Apart from the message (in different languages) there is no way to tell
        // if it was a sharing violation or another IO exception.
    }
}

これがあなたの探求に役立つことを願っています。

于 2013-02-17T16:38:49.670 に答える
0

より良い方法は、DBE を使用するか、データを RAM にロードして同時アクセスを管理できる独自のものを作成することです。

于 2013-02-17T15:31:29.950 に答える