例外が発生しています: プロセスがファイルにアクセスできません。
コードは次のとおりです。
if (!Monitor.TryEnter(lockObject))
return;
try
{
watcher.EnableRaisingEvents = false;
try
{
XmlDocument xdoc = new XmlDocument();
xdoc.Load(FileName);
xdoc = null;
}
catch (XmlException xe)
{
using (StreamWriter w = File.AppendText(FileName))
{
Console.WriteLine(xe);
w.WriteLine("</test>");
w.WriteLine("</testwrapper>");
}
}
System.Threading.Thread.Sleep(2000);
XPathDocument myXPathDoc = new XPathDocument(new StreamReader(FileName, System.Text.Encoding.GetEncoding("windows-1256")));
XslCompiledTransform myXslTrans = new XslCompiledTransform();
myXslTrans.Load("D:/GS/xsl/test.xsl");
XmlTextWriter myWriter = new XmlTextWriter(destinationFile, null);
myWriter.Formatting = Formatting.Indented;
myWriter.Indentation = 4;
myXslTrans.Transform(myXPathDoc, null, myWriter);
myWriter.Close();
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
finally
{
Monitor.Exit(lockObject);
watcher.EnableRaisingEvents = true;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
これらの行を追加する前に、コードは完全に機能していました。これらは主に、xml ファイルに終了タグがないかどうかをテストするためのものです (これは通常取得してからタグを追加します)。次のコードを追加した後、この例外が発生し始めました。
try
{
XmlDocument xdoc = new XmlDocument();
xdoc.Load(FileName);
xdoc = null;
}
catch (XmlException xe)
{
using (StreamWriter w = File.AppendText(FileName))
{
Console.WriteLine(xe);
w.WriteLine("</test>");
w.WriteLine("</testwrapper>");
}
}
ここで何が間違っている可能性がありますか?
編集:私が得ているエラー
プロセスが失敗しました: System.IO.IOException: 別のプロセスによって使用されているため、プロセスはファイル 'z :\TF_B1BBA.xml' にアクセスできません。System.IO.__Error.WinIOError (Int32 errorCode、String MaybeFullPath) で System.IO.FileStream.Init (String パス、FileMode モード、FileAccess アクセス、I nt32 権限、ブール値の useRights、FileShare 共有、Int32 bufferSize、FileOptions オプション、 SECURITY_ATTRIBUTES secAttrs、String msgPath、Boolean bFromProxy、Boolean n useLongPath) を System.IO.FileStream..ctor (String パス、FileMode モード、FileAccess アクセス、FileShare 共有、Int32 bufferSize) で System.Xml.XmlDownloadManager.GetStream (Uri uri、 System.Xml の System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri、String role、Type ofO bjectToReturn) の ICredentials 資格情報、IWebProxy プロキシ、RequestCachePolicy cachePolicy)。System.Threading.CompressedStack.runTryCode(Object userData) の XmlTextReaderImpl.OpenUrlDelegate(Object xmlResolver) System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode コード、CleanupCode backoutCode、Object userData) System.Xml.XmlTextReaderImpl.OpenUrl() での System.Xml.XmlTextReaderImpl.Read() での圧縮スタック、Cont extCallback コールバック、オブジェクト状態)。System.Xml.XmlLoader.Load(XmlDocument ドキュメント、XmlReader リーダー、ブール値 prese veWhitespace) で System.Xml.XmlDocument.Load(XmlReader リーダー) で System.Xml.XmlDocument.Load(文字列ファイル名) で GSelInterface.Program.convert( C のオブジェクト ソース、FileSystemEventArgs f):