का उपयोग करके सशर्त रूप से एक कोड को सशक्त रूप से चलाने के लिए कैसे करें मेरे पास संसाधनों को पुनर्प्राप्त करने का एक प्रभारी है जो उन्हें त्वरित पहुंच के लिए भी कैश करता है। वर्ग एक संसाधन पुन: प्राप्त करने के लिए एक अतुल्यकालिक विधि को उजागर करता है:कार्य
public Task<object> GetResourceAsync(string resourceName)
{
return Task.Factory.StartNew<object>(() =>
{
// look in cache
// if not found, get from disk
// return resource
});
}
ग्राहक कोड तो इस तरह दिखता है:
myResourceProvider.GetResourceAsync("myResource")
.ContinueWith<object>(t => Console.WriteLine("Got resource " + t.Result.ToString()));
इस तरह, एक पृष्ठभूमि धागा हमेशा प्रयोग किया जाता है। हालांकि, मैं नहीं चाहता कि कोड कैश में पाया गया हो तो कोड असीमित रूप से चलाना चाहता है। यदि यह कैश में पाया गया था, तो मैं तुरंत संसाधन वापस करना चाहता हूं और किसी अन्य धागे का उपयोग नहीं करना चाहता हूं।
धन्यवाद।
यह वास्तव में क्या मैं है को ढूंढ रहा था। धन्यवाद! –
+1 मैं इस सवाल से पूछ रहा था (http://stackoverflow.com/questions/15316613/real-life-scenarios-for-using-taskcompletionsourcet) और अब मैं देख सकता हूं कि मुझे इसका उपयोग कब करना चाहिए। –
@Joe क्या आप कार्य के लिए इस कोड को बढ़ा सकते हैं (समाधान जोड़ना)। FromResult? –