मैं एक उदाहरण के रूप में दिखाने के लिए सी # के साथ एक सरल उलटी गिनती-आवेदन करना चाहता था।सी # सरल उलटी गिनती - मैं क्या गलत कर रहा हूँ?
पहले और मूल संस्करण के लिए मैं एक लेबल का उपयोग करता हूं ताकि वर्तमान समय सेकंड में छोड़ा जा सके और उलटी गिनती शुरू करने के लिए एक बटन प्रदर्शित किया जा सके। बटन के क्लिक-घटना इस तरह कार्यान्वित किया जाता है:
private void ButtonStart_Click(object sender, RoutedEventArgs e)
{
_time = 60;
while (_time > 0)
{
_time--;
this.labelTime.Content = _time + "s";
System.Threading.Thread.Sleep(1000);
}
}
अब जब उपयोगकर्ता ((नींद()) के कारण आवेदन फ्रीज़ के रूप में) समय के चुने हुए राशि के लिए लेकिन बटन समय वास्तव में नीचे में गिना जाता है पर क्लिक करता है लेबल का संदर्भ ताज़ा नहीं किया जाता है।
क्या मैं कुछ सामान्य रूप से गलत कर रहा हूं (जब यह थ्रेड की बात आती है) या क्या यह यूआई के साथ एक समस्या है?
आपके उत्तरों के लिए धन्यवाद! अब मैं एक सिस्टम का उपयोग करता हूं। Windows.Threading.DispatcherTimer जैसा आपने मुझे बताया था। सब कुछ ठीक काम करता है तो इस सवाल का आधिकारिक तौर पर उत्तर दिया जाता है;)
जो लोग रुचि रखते हैं के लिए: यहाँ मेरी कोड (आवश्यक भागों)
public partial class WindowCountdown : Window
{
private int _time;
private DispatcherTimer _countdownTimer;
public WindowCountdown()
{
InitializeComponent();
_countdownTimer = new DispatcherTimer();
_countdownTimer.Interval = new TimeSpan(0,0,1);
_countdownTimer.Tick += new EventHandler(CountdownTimerStep);
}
private void ButtonStart_Click(object sender, RoutedEventArgs e)
{
_time = 10;
_countdownTimer.Start();
}
private void CountdownTimerStep(object sender, EventArgs e)
{
if (_time > 0)
{
_time--;
this.labelTime.Content = _time + "s";
}
else
_countdownTimer.Stop();
}
}