मेरे कोड में मैं एक mqtt क्लाइंट का उपयोग कर रहा हूं, जब कोई संदेश प्राप्त होता है तो ईवेंट हैंडलर उठाया जाता है और संदेश एक सूची में संग्रहीत हो जाता है।

private void MqttBroker_MqttMessagePublishedReceived(object sender, Events.MqttMessageEventArgs e)
        {
            _logger?.Information($"MqttBroker_MqttMessagePublishedReceived - message received by the watcher {e}");
            try
            {
                if (e?.Payload != null)
                {
                    _messages.AddMessage(e.Payload);
                }
            }
            catch (Exception ex)
            {
                _logger?.Error($"MqttBroker_MqttMessagePublishedReceived - Something went wrong: {ex}");
            }
        }

इस बीच, मैं थोड़ी देर के लूप के साथ किसी अन्य फ़ंक्शन में x मिनट की प्रतीक्षा कर रहा हूं। इसे दूसरे तरीके से किया जाना चाहिए लेकिन फिलहाल मैंने इसे आराम दिया है। लेकिन मेरा सवाल अब है। क्या यह संभव है कि लूप एक घटना को रोक सकता है जिसे उठाया जा रहा है? ताकि एमक्यूटी ब्रोकर एक संदेश प्रकाशित करे जब मैं उस समय लूप में हूं?

मेरा दूसरा प्रश्न निम्नलिखित है, थोड़ी देर के लूप के बजाय मैंने अपने धागे को एक्स मिनट के लिए सोने दिया क्या घटना अभी भी उठाई गई है और क्या संदेश अभी भी मेरी सूची में संग्रहीत किए जाएंगे?

आपका अग्रिम में ही बहुत धन्यवाद!

0
John 21 अक्टूबर 2020, 12:57

1 उत्तर

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

निर्भर करता है।

यदि आपके ईवेंट को किसी अन्य थ्रेड में बुलाया जाता है, तो कोई समस्या नहीं होगी, लेकिन यदि आप अपना ईवेंट थ्रेड और आपका लूप थ्रेड समान हैं, तो ईवेंट "चूसा" नहीं होगा, यह तब तक प्रतीक्षा करेगा जब तक कि लूप खत्म न हो जाए और फिर यह ट्रिगर हो जाएगा प्रतिस्पर्धा

1
Nico Walsemann 21 अक्टूबर 2020, 13:07