私はUniの割り当てのためにプロジェクトのWindowsフォームを作成しています。名前と姓が一致する場合は、すでに作成されたテキストファイルを検索して名前と姓を一致させたいと考えています。私はコードを構築してエラーを表示していませんが、実行して情報を追加しようとすると、次のプロセスが本質的にエラーとなります(Streamreaderのライターは、別のプロセスによって既に使用されているため、私はこのプロセスがstreamreaderであると仮定し、私は無駄に読み込みを停止するようにコード化しようとしました。私は最初の3ヶ月間コーディングを学んでおり、できるだけ助けていただければ幸いです。下に私のコードのスニペットを入れました。c#ストリームリーダを終了する方法
//check if there is a file with that name
if (File.Exists(sFile))
{
using (StreamReader sr = new StreamReader(sFile))
{
//while there is more data to read
while (sr.Peek() != -1)
{
//read first name and last name
sFirstName = sr.ReadLine();
sLastName = sr.ReadLine();
}
{
//does this name match?
if (sFirstName + sLastName == txtSearchName.Text)
sr.Close();
}
//Process write to file
using (StreamWriter sw = new StreamWriter(sFile, true))
{
sw.WriteLine("First Name:" + sFirstName);
sw.WriteLine("Last Name:" + sLastName);
sw.WriteLine("Gender:" + sGender);
}
ここでは、StreamReaderの閉じ括弧があります。 usingディレクティブはstreamreaderを破棄し、ファイルのロックを解除しますが、ライターを開いた後でなければ閉じていないかのように見えますか? – Wheels73
入力ファイルを読み込んで一時ファイルに書き込み、入力ファイルを一時ファイルで圧縮します。 –
コードのこの部分が実行されていますか?同時に、同じファイルを読み書きしようとしているようです。 –