15

विंडोज फोन 8 में मेरे पास विधि public async Task<bool> authentication() है। फ़ंक्शन का रिटर्न प्रकार bool है, लेकिन जब मैंने if में अपने लौटाए गए मान का उपयोग करने की कोशिश की तो स्थिति त्रुटि कहती है कि Task<bool> से bool को परिवर्तित नहीं किया जा सकता है।क्या शर्तों में कार्य <bool> का उपयोग करना संभव है?

public async Task<bool> authentication() 
{ 
    var pairs = new List<KeyValuePair<string, string>> 
    { 
     new KeyValuePair<string, string> ("user", _username), 
     new KeyValuePair<string, string> ("password", _password) 
    }; 

    var serverData = serverConnection.connect("login.php", pairs); 

    RootObject json = JsonConvert.DeserializeObject<RootObject>(await serverData); 

    if (json.logined != "false") 
    { 
     _firsname = json.data.firsname; 
     _lastname = json.data.lastname; 
     _id = json.data.id; 
     _phone = json.data.phone; 
     _ProfilePic = json.data.profilePic; 
     _thumbnail = json.data.thumbnail; 
     _email = json.data.email; 
     return true; 
    } 
    else 
     return false; 
} 
+0

नहीं, आप इसका उपयोग सीधे नहीं कर सकते क्योंकि 'कार्य ' 'bool' नहीं है। आपको उस कोड को पोस्ट करना चाहिए जिसमें आपको वास्तव में समस्या हो रही है, लेकिन आप शायद 'bool b = प्रमाणीकरण का इंतजार कर सकते हैं); अगर (बी) {...} ' – Lee

+0

आपकी" async "प्रमाणीकरण विधि कुछ भी इंतजार नहीं करती है, तो यह वास्तव में असीमित है – Servy

उत्तर

30

अपने कार्य की वापसी प्रकार Task<bool>, नहीं bool ही है। परिणाम पाने के लिए आपको await कीवर्ड का उपयोग करना चाहिए:

bool result = await authentication(); 

आप async/await भाषा सुविधा के बारे में अधिक जानकारी प्राप्त करने के पढ़ सकते हैं "एक Async विधि में क्या होता है" इस MSDN article की अनुभाग।

+0

लेख – MohamedAbbas

+0

लेख के लिए धन्यवाद, मेरा दिन आदमी बनाया: डी –

1

आप कार्य await की जरूरत है:

bool result = await authentication(); 

या, आप एक Task पर इंतजार कर के अपने पसंदीदा वैकल्पिक विधि का उपयोग कर सकते हैं।

+1

एसिंक/का उपयोग करके प्रतीक्षा करें "वैकल्पिक तरीकों" ('कार्य। प्रतीक्षा()' या 'कार्य। परिणाम') अक्सर [डेडलॉक स्थितियों] (http://stackoverflow.com/questions/13140523/await-vs-task-wait-deadlock) का कारण बन सकता है । –

संबंधित मुद्दे

 संबंधित मुद्दे