현재 Itunes에서 재생되는 트랙 정보를 XML 파일에 저장하는 C# 코드가 있습니다. 코드 일부는 정상적으로 작동하지만 일반적으로 myXmlDocument.Save (ClsUtils.XmlPath)에서 "다른 프로세스에서 사용중인 프로세스이므로 xml 파일에 액세스 할 수 없습니다."오류가 발생합니다.XML 파일을 저장하는 중 오류가 발생했습니다.
중 하나가 잘못 여기에 갈 수있는 무엇을 제안 할 수 있습니다 .....
는 다음 코드
의 조각public void ModifyLastTrack(bool bOnlyPlayerPosition)
{
//initilize XML Document
XmlDocument myXmlDocument = new XmlDocument();
//load Xml into document
myXmlDocument.Load(ClsUtils.XmlPath);
//get Node for modify if Checked state Changed
XmlNode DictLastTrackNode;
DictLastTrackNode = myXmlDocument.DocumentElement;
foreach (XmlNode ChildDictNode1 in DictLastTrackNode.ChildNodes)
{
foreach (XmlNode ChildDictNode2 in ChildDictNode1.ChildNodes)
{
if (!bOnlyPlayerPosition)
{
if (ChildDictNode2.Name == "TrackID")
ChildDictNode2.InnerText = TrackID;
}
else
{
if (ChildDictNode2.Name == "PlayerPosition")
ChildDictNode2.InnerText = PlayerPosition.ToString();
}
}
}
//save Xml after modification
myXmlDocument.Save(ClsUtils.XmlPath);
}
는 분명히 다른 프로세스가 열려있는 파일을 유지하고 파일을 점유하는 다른 프로세스의 경우에는 저장하려는 XML로 –
이 오류 번호를 추가하는 것입니다 내용을 저장 한 후에 myXmlDocument'를'Disposing'하는 곳에서 원래의 XMLDocument를'Disposed '하지 않을 때 발생합니다 ..? 'myXmlDocument.Save (ClsUtils.XmlPath)'다음에'using() {}'에 XmlDocument 객체의 생성을 래핑하거나 덮어 쓰는 것이 좋습니다. 다음 ('IDisposable myXmlDocument) .Dispose();' – MethodMan
@ DJKRAZE - 총 꼴통. XmlDocuemnt는 IDispsable이 아닙니다. 게다가'Save()'와'Load()'는 아무 것도 닫히지 않은 상태로 남겨 두지 않는다. –