2013-06-04 48 views
0

我加載我的文件,像這樣:保存的XDocument問題

WebClient client = new WebClient(); 
     client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted); 
     client.OpenReadAsync(new Uri("Rolls.xml", UriKind.Relative)); 

然後在完成了閱讀:

XDocument doc = XDocument.Load(XmlReader.Create(e.Result)); 

     using (Stream stream = e.Result) 
     { 
      { 
       foreach (var roll in _rollsToAddStudentTo) 
       { 
        doc.Element("rolls").Add(new XElement("rollid", roll)); 
       } 
       doc.Save(stream); 
      } 

     } 

問題是,當它到達救我得到的錯誤

「不支持指定的方法」。

幫助將不勝感激。 乾杯

感謝Jehof,

那麼,如何將納入我的文檔轉化爲一個異步方法?

foreach (var roll in _rollsToAddStudentTo) 
       { 
        doc.Element("rolls").Add(new XElement("rollid", roll)); 
       } 

       WebClient client = new WebClient(); 
       client.OpenWriteCompleted += new OpenWriteCompletedEventHandler(client_OpenWriteCompleted); 
       client.OpenWriteAsync(new Uri("Rolls.xml", UriKind.Relative)); 

我已通過將我的邏輯更改爲下方來解決此問題。

using (IsolatedStorageFile isoStore = 
      IsolatedStorageFile.GetUserStoreForApplication()) 
      { 
       // Create new file 
       using (IsolatedStorageFileStream isoStream = 
        new IsolatedStorageFileStream("Rolls.xml", 
         FileMode.Create, isoStore)) 
       { 
        // Write to the Isolated Storage for the user. 
        XmlWriterSettings settings = new XmlWriterSettings(); 
        settings.Indent = true; 
        // Create an XmlWriter. 
        using (XmlWriter writer = XmlWriter.Create(isoStream, settings)) 
        { 
         writer.WriteStartDocument(); 
         writer.WriteStartElement("Rolls"); 

         foreach (var roll in _rollsToAddStudentTo) 
         { 
          writer.WriteStartElement("roll"); 
          writer.WriteAttributeString("rollid", roll); 
          writer.WriteEndElement(); 
         } 

         writer.WriteEndElement(); 
         writer.WriteEndDocument(); 
        } 
       } 
      } 

回答

0

您嘗試保存XDocument的流爲readonly。因爲它是您傳遞給您的方法client_OpenReadCompleted的參數已註冊到事件OpenReadCompleted的參數。

如果要通過WebClient將您的XDocument保存回去,您需要調用OpenWriteAsync-方法之一。