Падение StorageFolder.CreateFileAsync при вызове из App.OnSuspending

Мое приложение Win RT, которое работало с VS2012RC в бета-версии Windows 8, теперь имеет с окончательными версиями Visual Studio и Windows 8 Pro проблему, заключающуюся в том, что создание/открытие файла в OnSuspending работает, только если я установил точку останова отладчика -к способу создания файла.

private void OnSuspending(object sender, SuspendingEventArgs e){                        
     var deferral = e.SuspendingOperation.GetDeferral();                       
     if (null != m_document) Save();
     deferral.Complete();
}

async void Save(){
    var folder = KnownFolders.DocumentsLibrary;       
    var file = await folder.CreateFileAsync(GetFileName(),Windows.Storage.CreationCollisionOption.ReplaceExisting);                

    var xDoc = GetXDocument();
    using (var stream = await file.OpenStreamForWriteAsync()){
       xDoc.Save(stream);                    
    }           
}
  • Если я установлю точку останова на StorageFile file = await folder.CreateFileAsync(..., отладчик войдет в продолжай, все работает.

  • Однако, если я не установлю точку останова, файл будет создан, но содержимое xml не будет сохранено (файл остается пустым ).

  • Если я установлю точку останова ниже строки StorageFile file = await folder.CreateFileAsync(..., отладчик никогда не войдет!

У кого-нибудь есть идея? Я также протестировал версию, использующую folder.OpenStreamForWriteAsync, с тем же эффектом.

5
задан Charles 21 August 2012 в 16:50
поделиться