2012-12-06 30 views
4

場景:的VBScript和C#讀/寫XML沒有鎖定文件

  1. 網絡用戶登錄到域
  2. 組策略運行的VBScript
  3. 的VBScript從XML
  4. VBScript中執行基於操作讀從XML中獲得的信息

我應該使用什麼樣的VBScript方法,以便通過多個用戶訪問t他XML在同一時間我不會容易出現文件鎖定問題?

如果我在運行時間內(在讀取XML的同時)從一個網絡位置讀入和修改現有的XML文件,我應該使用哪些C#方法讀取/寫入到C#程序中XML不會導致鎖定問題?

+0

有沒有辦法允許寫入沒有鎖定文件(因爲用戶B可以讀取文件,用戶A可以寫入文件,然後用戶B寫入文件導致用戶A的記錄丟失)。您將需要創建一個可以管理請求的服務。更簡單的選擇是使用SQL Server而不是XML服務。 – Trisped

+0

我需要在這方面更具體: – user1880826

+0

您可以添加一個標記字段到XML文件,指出它是否正在使用,並可能通過哪個帳戶進行調試/跟蹤目的。在使用時,將相關字段的標記設置爲1,完成後,腳本將其更改爲0.在您的VBS中添加一個等待。這種方法可能被認爲是黑客行爲,但它應該工作,除非腳本需要很長時間才能運行,或者如果您有大量用戶同時訪問XML。在這種情況下,切換到SQL。 – Lizz

回答

0

對於C#程序訪問你能做的XML文件中的以下內容:

  1. 來處理XML文件讀/寫請求使用BackgroundWorker組件
  2. 添加所有相應的事件處理程序來了解進度更新等
  3. 調用RunWorkerAsync啓動讀/寫操作。

來源:MSDN

0

我不明白爲什麼這s'd那麼複雜。只需操作2個文件。

  • 的VBScript從文件A1.xml
  • C#程序寫入/更新文件A2.xml讀取,然後進行更換A1.xml

而且VBS可能看起來像...

Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0") 
xmlDoc.Async = False 
bReturn  = False 
Do Until bReturn 
    WScript.Sleep 3500 
    bReturn = xmlDoc.Load(".../A1.xml") 
Loop 
'... 
+1

請將參數列表()添加到.Load調用。 –

+0

@ Ekkehard.Horner - 是的,感謝您的更正,更新。 –