これは本当に奇妙なものです。XML ファイルを書き込むアプリを作成していました。ただし、場合によっては、ファイルが作成/上書きされないことがあります。
書き込みに失敗する原因となる特定のイベントを追跡することができ、それをスタンドアロン プログラムに分離しました。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
bool doFileOpenFirst = false;
if (doFileOpenFirst)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.CheckFileExists = true;
dialog.Filter = "Image files|*.bmp;*.jpg;*.png";
dialog.ShowDialog();
}
// Just write a trivial XML file
XmlDocument doc = new XmlDocument();
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.AppendChild(dec);// Create the root element
XmlElement root = doc.CreateElement("Database");
doc.AppendChild(root);
doc.Save("Trivial.xml");
}
}
これを実行すると、最初は動作することがわかります。doFileOpenFirst を true にします。XML を書き込む前に、ファイルを開くためのダイアログが表示されます。このダイアログを使用してファイル (「Trivial.xml」以外の任意のファイル) を選択すると、その後の XML 保存は失敗します。静かに。OpenFileDialog でキャンセルを押すと、保存は正常に機能します。
ファイル ハンドルに問題がある可能性がありますが、回避策はありますか? OpenFileDialog の Dispose を強制しても役に立たないことがわかります。