Avatar ·

C# में सिंक्रोनस मेथड से एसिंक्रोनस मेथड कैसे कॉल करें? डेडलॉक और await की समस्या

सभी को नमस्ते! मैं C# में नया हूँ और async/await को समझने की कोशिश कर रहा हूँ। मेरे पास एक WinForms एप्लिकेशन है, और मैं एक लाइब्रेरी का उपयोग कर रहा हूँ जो केवल एसिंक्रोनस मेथड प्रदान करती है (जैसे `HttpClient.SendAsync()`)। समस्या यह है कि मुझे इस एसिंक्रोनस मेथड को एक सिंक्रोनस मेथड से कॉल करना है, जो बटन क्लिक इवेंट से कॉल होता है। मैं पूरे मेथड को एसिंक्रोनस नहीं बना सकता, क्योंकि इससे प्रोग्राम के अन्य भागों की लॉजिक खराब हो जाती है (जैसे कंस्ट्रक्टर या प्रॉपर्टी से कॉल)। यहाँ मेरे कोड का सरलीकृत उदाहरण है: ```csharp public string GetData() { // यह एक सिंक्रोनस मेथड है जिसे परिणाम लौटाना है var client = new HttpClient(); var task = client.GetStringAsync("https://example.com"); task.Wait(); // परिणाम का इंतजार करने की कोशिश return task.Result; // परिणाम प्राप्त करना } ``` लेकिन इससे डेडलॉक (प्रोग्राम हैंग) हो जाता है। मैंने पढ़ा है कि यह SynchronizationContext के कारण होता है, लेकिन मुझे समझ नहीं आ रहा कि सही तरीके से कैसे किया जाए।