0

サービスを作成しましたが、サービスが行うことは、xml ファイルに情報を書き込むことです。

ほとんどの場合、予定外の再起動で発生するようですが、使用されているファイルが「ロック」されているため、サービスを開始できません。このエラーは、サービスが「自動開始」に設定されているため、システムがまだ起動しているときに発生します。

これはWindows 2003の下にあります。

なぜこれが起こっているのか知っている人はいますか?

ありがとう。

The process cannot access the file 'D:\myService\eventlog.xml' because it is being used by another process.

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.Xml.XmlTextWriter..ctor(String filename, Encoding encoding)
at System.Data.DataTable.WriteXml(String fileName, XmlWriteMode mode, Boolean writeHierarchy)
at System.Data.DataTable.WriteXml(String fileName)
at myService.c_control.addXmlLog(eventStatus timeStatus) 
4

2 に答える 2

0

サービスがこれに2回アクセスして、毎回排他ロックを取得しようとしている可能性はありますか?

于 2009-01-21T17:37:59.793 に答える
0

再起動後、サービスの開始が早すぎることが原因で問題が発生している場合は、前回の再起動時間を確認し、再起動後数分経過するまでタスクの実行をスキップしてください。System.Environment.TickCount は、最後の起動時間からのミリ秒数を示します。

http://msdn.microsoft.com/en-us/library/system.environment.tickcount.aspx

于 2009-01-26T13:05:09.460 に答える