मैं रोबोट नियंत्रक के लिए एक रैपिंग लाइब्रेरी पर काम कर रहा हूं, जो ज्यादातर पी/इनवॉक कॉल पर निर्भर करता है।Async P/कॉल को कॉल करें
हालांकि, रोबोट, जैसे होमिंग, या मूवमेंट के लिए बहुत सारी कार्यक्षमता काफी समय लेती है, और चलते समय थ्रेड लॉक करते हैं।
तो मैं सोच रहा हूं कि मैं कार्यक्षमता को एसिंक तरीके से कैसे लपेट सकता हूं, इसलिए कॉल मेरे यूआई थ्रेड को अवरुद्ध नहीं करते हैं। मेरा विचार अभी तक कार्य का उपयोग करना है, लेकिन मुझे सच में यकीन नहीं है कि यह सही दृष्टिकोण है।
public Task<bool> HomeAsync(Axis axis, CancellationToken token)
{
return Task.Factory.StartNew(() => Home(axis), token);
}
.NET में Async मॉडल के रूप में पर MSDN लेख में से अधिकांश अभी, ज्यादातर पहले से ही Async कार्यक्षमता (जैसे File.BeginRead के रूप में और इतने पर) होने पुस्तकालयों पर प्रसारण किया जाता है। लेकिन मुझे वास्तव में एसिंक कार्यक्षमता को वास्तव में कैसे लिखना है, इस बारे में अधिक जानकारी नहीं मिल रही है।
आप किस प्रकार का इंटरफ़ेस उपयोग कर रहे हैं? या यह एक पुस्तकालय है जिसे एक विशिष्ट इंटरफेस से स्वतंत्र रूप से बनाया जाना है? –
मान लीजिए कि आप यूआई इंटरफ़ेस का मतलब है, इसके ऊपर एप्लिकेशन का निर्माण WPF है। लेकिन मैं इसे लाइब्रेरी स्तर पर संभालना पसंद करूंगा, इसलिए यूआई टीम को थ्रेडिंग के बारे में ज्यादा चिंता करने की ज़रूरत नहीं है। –
रोबोट इंटरफ़ेस सामान्य रूप से इस तरह से काम नहीं करता है। आप पूरी तरह से डिवाइस पर नियंत्रण खो देंगे, आप होमिंग कदम को भी रोक नहीं सकते। एक होम कमांड आम तौर पर सिर्फ होमिंग चाल शुरू करता है, फिर आप इसे पूरा करते समय मतदान करेंगे या सिग्नल प्राप्त करेंगे। इस तरह से करने के लिए प्रतिबद्ध करने से पहले इंटरफ़ेस में क्या उपलब्ध है इसकी जांच करें। –