यह स्पष्ट है: उदाहरण के लिए, मेरे रूप में एक बटन की कल्पना करें। जब उपयोगकर्ता बटन पर क्लिक करता है, तो कुछ शून्य विधि 30 सेकंड के बाद चलनी चाहिए।विशिष्ट समय अंतराल के बाद कोई विधि कैसे चलाएं?
एक शून्य विधि "DoAfterDelay" होगी जो 2 इनपुट लेती है, पहला ऐसा करने का तरीका है (प्रतिनिधियों का उपयोग करके), और दूसरा समय अंतराल है। इसलिए मैं होगा:
public delegate void IVoidDelegate();
static void DoAfterDelay(IVoidDelegate TheMethod, TimeSpan Interval)
{
// *** Some code that will pause the process for "Interval".
TheMethod();
}
तो मैं सिर्फ एक विशिष्ट समय अंतराल के लिए प्रक्रिया को रोकने के लिए कोड का एक टुकड़ा की जरूरत है। पहले, मुझे लगता है कि ऐसा करने के लिए इस कोड का प्रयोग किया:
System.Threading.Thread.Sleep(Interval);
लेकिन इस कोड मेरे लिए अच्छा नहीं है क्योंकि यह पूरी प्रक्रिया बंद हो जाता है और कार्यक्रम जमा है। मैं नहीं चाहता कि कार्यक्रम "DoAfterDelay" विधि में फंस जाए। यही कारण है कि Thread.Sleep
बेकार है।
तो क्या कोई बेहतर तरीका सुझा सकता है? बेशक मैंने इसके बारे में खोज की है, लेकिन अधिकांश समाधान मैंने पाया है कि टाइमर का उपयोग करने के आधार पर (उदाहरण के लिए here)। लेकिन टाइमर का उपयोग करना मेरी आखिरी राय है, क्योंकि विधि को एक बार चलाना चाहिए और टाइमर का उपयोग करना प्रोग्राम को पढ़ने में भ्रमित कर देता है। तो अगर वहां है तो मैं एक बेहतर समाधान की तलाश में हूं। या शायद मुझे टाइमर का उपयोग करना होगा?
मुझे लगता है मुझे धागे के साथ खेलना है, लेकिन यकीन नहीं है। तो मुझे आश्चर्य है कि कोई मुझे समाधान के लिए मार्गदर्शन कर सकता है। अग्रिम में धन्यवाद।
एक 'Timer' उपयोग करके देखें। – Adrian