मेरा विन आरटी एप्लिकेशन जो विंडोज 8 बीटा पर वीएस2012 आरसी के साथ काम करता है, अब दृश्य स्टूडियो के अंतिम संस्करणों और विंडोज 8 समस्या के कारण है, जो फाइल बना रहा/खोल रहा है OnSuspending के भीतर केवल तभी काम करता है जब मैं फ़ाइल निर्माण विधि में डीबगर-ब्रेकपॉइंट सेट करता हूं।StorageFolder.CreateFileAsync ऐप से कॉल करते समय क्रैश होता है। ओनसस्पेंडिंग
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(...
पर एक ब्रेकपाइंट सेट, डिबगर में प्रवेश करती है और अगर मैं जारी रखने के , सब ठीक काम करता है।हालांकि अगर मैं ब्रेकपॉइंट सेट नहीं करता हूं, तो फ़ाइल बनाई जाएगी, लेकिन एक्सएमएल की सामग्री सहेजी नहीं जाएगी (फ़ाइल खाली है)।
यदि मैं
StorageFile file = await folder.CreateFileAsync(...
लाइन के नीचे एक ब्रेकपॉइंट सेट करता हूं, तो डीबगर कभी प्रवेश नहीं करता है!
क्या किसी को कोई विचार है? मैंने एक संस्करण का भी परीक्षण किया है जो बहुत ही प्रभाव के साथ folder.OpenStreamForWriteAsync
का उपयोग करता है।
क्या यह ऑपरेशन समाप्त करने के लिए समय समाप्त हो सकता है? – mydogisbox
@mydogisbox: ऐसा लगता है। हालांकि मुझे नहीं पता क्यों। ऐसा लगता है कि सेव() में प्रतीक्षा कमांड सृजन तक इंतजार नहीं करता है, लेकिन सेव-फ़ंक्शन से तुरंत (या फ़ाइल निर्माण के बाद) लौटाता है। यह भी मैं देखता हूं, अगर मैं प्रत्येक विधि कॉल के बाद Debug.WriteLine-call जोड़ता हूं।ब्रेकपॉइंट के बिना, कोड "var xDox = GetXDocument()" - कॉल तक कभी नहीं पहुंच पाएगा। यह फ़ाइल निर्माण के बाद लौटाता है (लेकिन अपवाद के बिना)। – HCL