मेरा एप्लिकेशन मोंगोडीबी का उपयोग करता है और मुझे सर्वर से कनेक्ट करने और एप्लिकेशन लॉन्च होने पर कुछ महत्वपूर्ण डेटा प्राप्त करने की आवश्यकता होती है। यदि कनेक्शन का प्रयास विफल हो जाता है, तो मुझे उपयोगकर्ता से पूछना होगा कि क्या वह फिर से प्रयास करना चाहता है या एप्लिकेशन को बंद करना चाहता है।

अब तक मैं निम्नलिखित समाधान के साथ गया था:

public async Task LoadCriticalData()
{
    bool IsBusy = true;
    CancellationTokenSource Source = new CancellationTokenSource();
    CancellationToken Token = Source.Token;

    while (!Token.IsCancellationRequested)
    {
        try
        {
            await FetchCriticalData();

            IsBusy = false;

            Source.Cancel();
        }
        catch (Exception E)
        {
            bool Retry = RequestUserInteraction();

            if (!Retry)
            {
                Source.Cancel();
                CloseApplication();
            }
        } 
    }
}

मुझे वास्तव में अनंत लूप पसंद नहीं हैं (पहले कभी उन्हें सालों तक इस्तेमाल नहीं किया) लेकिन ऐसा लगता है कि इसे लागू करने का कोई और तरीका नहीं है।

क्या यह पर्याप्त है या इसे बेहतर तरीके से किया जा सकता है?

0
Technical 14 अप्रैल 2020, 23:39

1 उत्तर

सबसे बढ़िया उत्तर

जब तक कुछ निकास मानदंड हैं, तब तक लूप में किसी ऑपरेशन का पुन: प्रयास करना आम तौर पर ठीक है। या तो जब ऑपरेशन सफल होता है, या ऑपरेटर ऑपरेशन या एप्लिकेशन को समाप्त करने का चयन करता है। किसी भी मामले में यह वास्तव में एक अनंत लूप नहीं है।

1
JonasH 14 अप्रैल 2020, 20:52