Я получаю эту ошибку, когда я пишу в файл и заменить строки, содержащиеся в файле, и я не имею ни малейшего представления, как ее решить:Я использую StreamReader неэффективно? - «System.IO.IOException» произошло в mscorlib.dll
Процесс не может получить доступ к файлу «C: \ WarThunder \ config.blk», потому что он используется другим процессом.
Я попытался закрыть все, что у меня есть, которые могут размещать данные этих файлов, но у меня есть ощущение, что это, вероятно, мое неэффективное использование кода, вызывающего это. Раньше это не было проблемой. Я не помню, когда это всплыло:/
Следующий код повторяется один раз каждый для двух других флажков:
private void rdbDX11_CheckedChanged(object sender, EventArgs e)
{
if (rdbDX11.Checked == true)
{
pbOGL3Outer.Visible = false;
pdDX11Outer.Visible = true;
pdDX9Outer.Visible = false;
rdbDX9.Checked = false;
rdbOGL3.Checked = false;
Properties.Settings.Default.varRenderSelected = ("DirectX11");
using (StreamReader ReadConfig = new StreamReader(Properties.Settings.Default.SavedConfig))
{
while (ReadConfig.Peek() != 1) //While not end of file
{
var ReWriteFile = File.ReadAllText(Properties.Settings.Default.SavedConfig);
if (ReWriteFile.Contains(" driver:t=\"dx9\""))
{ ReWriteFile = ReWriteFile.Replace(" driver:t=\"dx9\"", " driver:t=\"dx11\""); }
else if (ReWriteFile.Contains(" driver:t=\"gl3\""))
{ ReWriteFile = ReWriteFile.Replace(" driver:t=\"gl3\"", " driver:t=\"dx11\""); }
else if (ReWriteFile.Contains(" driver:t=\"auto\""))
{ ReWriteFile = ReWriteFile.Replace(" driver:t=\"auto\"", " driver:t=\"dx11\""); }
System.IO.File.WriteAllText(Properties.Settings.Default.SavedConfig, ReWriteFile);
}
}
}
}
Читать весь текст 'var ReWriteFile = File.Re adAllText' отредактируйте его, затем напишите: 'File.WriteAllText (...'. Не используйте 'StreamReader' вообще –
Спасибо! Починил это :) – Lewis