मैं Xamarin प्रपत्रों में एक आवेदन कर रहा हूं जिसमें मुझे x समय के लिए प्रत्येक x बार एक विधि कॉल करने की आवश्यकता है (उदाहरण के लिए 2 मिनट के लिए प्रत्येक 5 सेकंड)। यह कैसे किया जा सकता है?
मुझे केवल हर बार एक विधि को कॉल करने के तरीके के बारे में जानकारी मिली है, लेकिन जो मैं ढूंढ रहा हूं उसके लिए यह पर्याप्त नहीं है।
मैंने यही कोशिश की है। यह कॉल MyMethod
15 सेकंड बीत जाने के बाद करता है:
await Task.Delay(new TimeSpan(0, 0, 15)).ContinueWith(async o =>
{
MyMethod();
});
और यह हर 5 सेकंड में MyMethod
कॉल करता है:
var startTimeSpan = TimeSpan.Zero;
var periodTimeSpan = TimeSpan.FromSeconds(5);
var timer = new System.Threading.Timer((e) =>
{
MyMethod();
}, null, startTimeSpan, periodTimeSpan);
मुझे x राशि के लिए प्रत्येक x सेकंड में MyMethod
को कॉल करने की आवश्यकता है।
2 जवाब
आप टाइमर के लिए एक सीमा सेकंड निर्धारित कर सकते हैं।
उदाहरण के लिए आप हर 5 सेकंड में 2 मिनट के लिए कुछ करना चाहते हैं।
int sec = 120000; // 2 minutes
int period = 5000; //every 5 seconds
TimerCallback timerDelegate = new TimerCallback(Tick);
Timer _dispatcherTimer = new System.Threading.Timer(timerDelegate, null, period, period);// if you want the method to execute immediately,you could set the third parameter to null
private void Tick(object state)
{
Device.BeginInvokeOnMainThread(() =>
{
sec -= period;
if (sec >= 0)
{
//do something
}
else
{
_dispatcherTimer.Dispose();
}
});
}
आप ऐसा कुछ कर सकते हैं:
आपको शायद पृष्ठभूमि में चल रहे थ्रेड की आवश्यकता होगी:
private async void CallMethodEveryXSecondsYTimes(int waitSeconds, int durationSeconds)
{
await Task.Run(() => {
var end = DateTime.Now.AddSeconds(durationSeconds);
while (end > DateTime.Now)
{
Dispatcher.BeginInvokeOnMainThread(() =>
{
YourMethod();
});
Thread.Sleep(waitSeconds*1000);
}
});
}
संबंधित सवाल
नए सवाल
c#
C # (उच्चारण "तेज देखें") Microsoft द्वारा विकसित एक उच्च स्तरीय, सांख्यिकीय रूप से टाइप किया हुआ, बहु-प्रतिमान प्रोग्रामिंग भाषा है। C # कोड आमतौर पर Microsoft के .NET परिवार के टूल और रन-टाइम को लक्षित करता है, जिसमें .NET फ्रेमवर्क, .NET कोर और Xamarin अन्य शामिल हैं। C # या C # के औपचारिक विनिर्देश में लिखे गए कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें।