में कभी भी रिटर्न और ऐप लटकता है, मैं एप्लिकेशन लॉन्च पर सेटिंग्स फ़ाइल लोड करने और पढ़ने का प्रयास कर रहा हूं, और लगभग 9 0% समय, await GetFileAsync("filename.xml");
कभी भी वापस नहीं लौटाता है, इस प्रकार, एप्लिकेशन को लटकाता है ।GetFileAsync() का इंतजार करने के लिए कॉल करें WinRT ऐप
समय के बारे में एक चौथाई, यदि मैं कोड के माध्यम से कदम उठाता हूं, तो यह वास्तव में वापस आ जाएगा और फ़ाइल को पढ़ेगा।
App.xaml.cs:
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
FileLoader.Load().Wait();
// File-load dependent stuff
}
FileLoader.cs:
public async static Task Load()
{
StorageFolder folder = ApplicationData.Current.LocalFolder;
StorageFile file;
bool fileExists = true;
try
{
// The following line (often) never returns
file = await folder.GetFileAsync("filename.xml");
{
catch
{
fileExists = false;
}
// Do stuff with loaded file
}
अगर मैं दृश्य स्टूडियो में आउटपुट विंडो घड़ी
यहाँ कोड का एक बहुत ही सरलीकृत संस्करण है , प्रतीक्षा करने के कुछ समय बाद मुझे "The thread '<No Name>' (0x30c) has exited with code 0 (0x0)."
क्या किसी के पास कोई विचार है यहाँ क्या हो रहा है?
आप यूआई थ्रेड को अवरुद्ध कर रहे हैं जहां तक मैं 'प्रतीक्षा' को कॉल करके देख सकता हूं। यह वास्तव में एक बुरा विचार है। बिल्ली, यह भी हो सकता है कि समस्या का कारण क्या हो रहा है। –
मुझे लगता है कि जॉन बिल्कुल सही है - किसी भी मौके पर आप Async के रूप में ऑनलाइन किया जा सकता है और उसके बाद लोड() कॉल का इंतजार कर सकते हैं? यदि आप नहीं कर सकते हैं, तो दूसरा दृष्टिकोण लोड लोड होने के बाद निष्पादित करने के लिए एक कार्रवाई करने के लिए हो सकता है और फिर अंत में कार्रवाई चलाएं (या, ज़ाहिर है, आप उस कार्य पर जारी रखें जिसका उपयोग लोड() रिटर्न जैसा कि आप async/await से पहले करेंगे :) –
आप दोनों सही थे, जॉन और जेम्स। इनपुट के लिए बहुत बहुत धन्यवाद! मैं मूल रूप से 'प्रतीक्षा' का उपयोग कर रहा था क्योंकि मुझे एहसास नहीं हुआ था कि आप एक ओवरराइड विधि में 'async' जोड़ सकते हैं, और मुझे नहीं पता था कि' ऑनलाउंच 'यूआई थ्रेड पर चल रहा था। 'प्रतीक्षा करें' को हटाकर 'async'' को 'async'' में जोड़कर इसे ठीक किया गया है! काश मैं आपकी टिप्पणी को उत्तर के रूप में चिह्नित कर सकता हूं। – jokeefe