تأخير العمليات في WPF
يعد تأخير العملية في WPF أمرًا ضروريًا لتعزيز تجربة المستخدم وضمان الانتقالات السلسة. أحد السيناريوهات الشائعة هو إضافة تأخير قبل الانتقال إلى نافذة جديدة.
لتحقيق ذلك، غالبًا ما يتم استخدام Thread.Sleep، كما هو موضح في مقتطف التعليمات البرمجية المقدم. ومع ذلك، يؤدي حظر مؤشر ترابط واجهة المستخدم باستخدام Thread.Sleep إلى عدم استجابة واجهة المستخدم أثناء حدوث التأخير. يظهر هذا كعرض مختصر للرسالة "تأخير لمدة دقيقتين" قبل الانتقال إلى الصفحة التالية.
لمعالجة هذا القيد، يوصى باستخدام تقنيات غير متزامنة مثل DispatcherTimer، أو Task.Delay، أو async/await.
الطريقة الأولى: استخدام DispatcherTimer
توفر فئة DispatcherTimer طريقة لتنفيذ إجراء بعد فترة زمنية محددة.tbkLabel.Text = " تأخير لمدة ثانيتين"؛ var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(2) }; timer.Start(); timer.Tick = (sender, args) => { timer.Stop(); صفحة فار = صفحة جديدة2(); page.Show(); };tbkLabel.Text = "two seconds delay"; var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(2) }; timer.Start(); timer.Tick = (sender, args) => { timer.Stop(); var page = new Page2(); page.Show(); };
الطريقة الثانية: استخدام Task.Delay
Task.Delay هي طريقة تُرجع مهمة تكتمل بعد تأخير محدد. tbkLabel.Text = "تأخير ثانيتين"; Task.Delay(2000).ContinueWith(_ => { صفحة فار = صفحة جديدة2(); page.Show(); });tbkLabel.Text = "two seconds delay"; var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(2) }; timer.Start(); timer.Tick = (sender, args) => { timer.Stop(); var page = new Page2(); page.Show(); };
الطريقة الثالثة: استخدام Async/Await (يتطلب .NET 4.5 أو أعلى)
يوفر بناء جملة Async/await طريقة أكثر أناقة وقابلية للقراءة للتعامل مع غير المتزامن العمليات.public async void TheEnclosingMethod() { tbkLabel.Text = "تأخير ثانيتين"; انتظر Task.Delay(2000); صفحة فار = صفحة جديدة2(); page.Show();
tbkLabel.Text = "two seconds delay"; var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(2) }; timer.Start(); timer.Tick = (sender, args) => { timer.Stop(); var page = new Page2(); page.Show(); };باستخدام هذه التقنيات غير المتزامنة، يظل مؤشر ترابط واجهة المستخدم مستجيبًا، ويرى المستخدم رسالة "تأخير ثانيتين" لفترة التأخير بأكملها قبل الانتقال إلى الصفحة الجديدة بسلاسة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3