Task<T>
संक्षेप में परिवर्तनीय है Task
, इसलिए बस एक पूर्ण Task<T>
(किसी भी T
और किसी भी मूल्य के साथ) प्राप्त करें और उसका उपयोग करें। आप इस तथ्य को छिपाने के लिए कुछ इस तरह का उपयोग कर सकते हैं कि वास्तविक परिणाम कहीं है।
private static Task completedTask = Task.FromResult(false);
public static Task CompletedTask()
{
return completedTask;
}
ध्यान दें कि जब से हम परिणाम को उजागर नहीं कर रहे हैं, और कार्य हमेशा पूरा हो गया है, हम किसी एक कार्य को कैश कर सकते हैं और उसका पुन: उपयोग कर सकते हैं।
यदि आप .NET 4.0 का उपयोग कर रहे हैं और आपके पास नहीं है FromResult
तो आप अपना स्वयं का उपयोग करके बना सकते हैं TaskCompletionSource
:
public static Task<T> FromResult<T>(T value)
{
var tcs = new TaskCompletionSource<T>();
tcs.SetResult(value);
return tcs.Task;
}
It seems like the answer I'm getting from everyone is that using a garbage value like this is the correct way. That there isn't a way to do this without the garbage value is disappointing -- oh well.
आपको क्या समस्या है? यदि आप एकल कैश करते हैंTask
तो आपका पूरा कार्यक्रम एक अतिरिक्त बिट मेमोरी लेता है। वह कुछ भी नहीं है । इसके अलावा, कोई ऐसा किए बिना एक पूरा कार्य बना सकता है, यह सिर्फ किसी भी बेहतर नहीं होगा।