2012-11-29 2 views
0

이 오류는 매번 발생하지 않으므로 이상하게 만듭니다. 50 %의 가능성으로 작동합니다. 액세스가 거부되었습니다. Windows 8 용 XAML을 사용하여 CRUD XML 파일을 시도 할 때

내가이 방법을

private async void btnSave_Click(object sender, RoutedEventArgs e) 
{ 
    await settings.WriteSettings(settings); 
} 

을 저장 호출하는 방법입니다 그리고 이것은 방법 자체

public async Task WriteSettings(Settings settings) 
{ 
    var ser = new System.Xml.Serialization.XmlSerializer(typeof(Settings)); 
    var writer = new StringWriter(); 
    ser.Serialize(writer, settings); 
    dom.LoadXml(writer.ToString()); 
    StorageFolder sf = ApplicationData.Current.LocalFolder; 
    StorageFile st; 
    st = await sf.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting); // here i get the error 
    await dom.SaveToFileAsync(st); 
} 

나는 너희들이 문제를 이해하고 해결

+0

당신이 빚을 이동,이 체크 아웃 : http://msdn.microsoft.com/en-us/library/bk3w6240%28v=VS.100 % 29.aspx –

답변

1
에게 점점 나를 도울 수 있기를 바랍니다있다

내가 Acces 파일을 두 번 이상하려고하면 Acces가 거부되는 이유가 생겼다. 파일을 사용한 후에 파일을 닫지 않았기 때문입니다.

이 내가 지금 파일을 액세서하는 방법입니다 : 여기

public static async Task WriteSettings(Settings settings) 
    { 
     StorageFile file = await ApplicationData.Current.RoamingFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting); 
     var stream = await file.OpenStreamForWriteAsync(); 

     var ser = new XmlSerializer(typeof(Settings)); 
     ser.Serialize(stream, settings); 

     await stream.FlushAsync(); // This 
     stream.Dispose(); // And this helped me solve my problem 
    } 
관련 문제