1

ログ情報で更新されているリッチテキストボックスがあります。ログ出力をファイルに保存するためのボタンがあります。以下のコードを使用して出力をファイルに保存しようとすると、「別のプロセスによって使用されているため、プロセスはファイルにアクセスできません」という例外が発生します。なぜこの例外が発生するのかわかりません。ダイアログで作成した新しいファイルで発生します。これは、情報を保存しようとするすべてのファイルで発生します。

private void saveLog_Click(object sender, EventArgs e)
{
            OnFileDialogOpen(this, new EventArgs());
            // Displays a SaveFileDialog so the user can save the Image
            // assigned to Button2.
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.Filter = "Text File|*.txt|Log File|*.log";
            saveFileDialog1.Title = "Save Log File";
            saveFileDialog1.ShowDialog();

            // If the file name is not an empty string open it for saving.
            if (saveFileDialog1.FileName != "")
            {
                // Saves the Image via a FileStream created by the OpenFile method.
                System.IO.FileStream fs =
                   (System.IO.FileStream)saveFileDialog1.OpenFile();
                // Saves the Image in the appropriate ImageFormat based upon the
                // File type selected in the dialog box.
                // NOTE that the FilterIndex property is one-based.
                switch (saveFileDialog1.FilterIndex)
                {
                    case 1:

                        try
                        {
                            this.logWindow.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.ToString());
                        }


                        break;
                    case 2:

                        try
                        {
                            this.logWindow.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.ToString());
                        }

                        break;
                }

                fs.Close();
                OnFileDialogClose(this, new EventArgs());
            }
}
4

1 に答える 1

3

同じファイルが2回開かれているようです。まず、以下を使用して作成します。

System.IO.FileStream fs =
                   (System.IO.FileStream)saveFileDialog1.OpenFile();

次に、同じファイル名をに渡しますthis.logWindow.SaveFile。これにより、おそらく指定された名前のファイルが開かれ、データが保存されます。

最初の呼び出しは不要だと思います。

于 2012-06-28T14:02:44.400 に答える