2010-11-01 14 views
5

मैं अपनी छवि संपीड़न सेवा के लिए कार्य पुस्तकालय का उपयोग करता हूं। मैं कई फाइलों को समेकित करना चाहता हूं। लेकिन मैं चाहता हूं कि सेवा केवल तभी चलती है जब उपयोगकर्ता निष्क्रिय हो (या प्रोग्राम में कोई अपरिवर्तनीय कार्य नहीं)।कार्य प्राथमिकता कार्यक्षमता कैसे जोड़ें

मुझे पता है कि थ्रेडपूल "परिवर्तन धागा प्राथमिकता" सुविधा का समर्थन नहीं करता है, इसलिए कार्य भी इस सुविधा का समर्थन करता है।

मैं नियंत्रण के उच्च स्तर पर है कि कार्यक्षमता? (उदाहरण के लिए TaskScheduler प्राथमिकता)

+0

लागू एक प्राथमिकता कतार – zengr

+0

zengr आप आप टिप्पणी को स्पष्ट किया जा सका:

यहाँ कि कैसे करना है का एक उदाहरण है? – Ivan

उत्तर

4

@zengr उल्लेख किया है, आप इस समस्या को हल करने के लिए एक प्राथमिकता कतार पैटर्न का उपयोग कर सकते हैं विकसित कर सकते हैं। वास्तविकता ConcurrentQueue<T> प्रति प्राथमिकता उदाहरणों का उपयोग करके प्राथमिकता कतारों को कार्यान्वित करने के लिए a good sample in MSDN है और उसके बाद इसे कस्टम IProducerConsumerCollection<T> कार्यान्वयन के साथ लपेटना है जो कम से कम उच्च प्राथमिकता कतार से वस्तुओं को खींचता है। इस प्रकार के कार्यान्वयन से आपके निर्माता को यह निर्धारित करने में सक्षम बनाता है कि कितनी प्राथमिकताओं को होना चाहिए, आइटम को जोड़े जाने पर प्राथमिकता असाइन करें और प्राथमिकता वाले एल्गोरिदम को कभी भी समझने के बिना पहले उपभोक्ता को उच्च प्राथमिकता वाले आइटमों पर काम करने दें।

2

आप कार्य समांतर लाइब्रेरी के लिए एक कस्टम TaskScheduler बना सकते हैं और फिर TaskFactory कन्स्ट्रक्टर के उदाहरण को पास करके उस पर कार्य निर्धारित कर सकते हैं। Task Scheduler with priority

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