قبل از خواندن این مقاله، لطفاً مقالات زیر را مرور کنید:
- کار پس زمینه در برنامه یونیورسال ویندوز - قسمت اول
- کار پس زمینه در برنامه یونیورسال ویندوز - قسمت دوم
- کار پس زمینه در برنامه یونیورسال ویندوز - قسمت سوم
مقدمه
در ویندوز 10، وظیفه پس زمینه در یک فرآیند جداگانه میزبانی می شود. این بدان معناست که برنامه اصلی در فرآیندهای مختلف اجرا می شود، در حالی که وظیفه پس زمینه در فرآیند جداگانه اجرا می شود.
به روز رسانی سالگرد ویندوز 10 (نسخه 1607) شامل یک ویژگی دیگر در فرآیند پس زمینه است. فرآیند پسزمینه اکنون در فرآیند برنامه گنجانده شده است، و این فرآیند واحد هر دو، برنامه (GUI) و وظیفه پسزمینه را مدیریت میکند.
چرخه عمر برنامه
فرآیند چرخه عمر برنامه چندین تغییر عمده برای اجرای مفهوم فرآیند واحد داشته است.
![چرخه زندگی](https://www.c-sharpcorner.com/article/background-task-in-universal-windows-program-part-four/Images/1.png)
در ابتدا، برنامه در حال اجرا نیست. شیء برنامه وارد فعالیت Background Task می شود و پس زمینه Task با اجرای برنامه متوقف می شود. برای پیاده سازی این مفهوم، شی Application دو رویداد دارد که باید پیاده سازی شوند:
- کاربرد. جاری. EnteredBackground
- کاربرد. جاری. ترک پس زمینه
این رویدادها نقش مهمی در مدیریت کار پسزمینه بازی میکنند (در نسخههای قدیمیتر ویندوز، Runtime Component همه این موارد را مدیریت میکند).
کد نمونه
- Application.Current.EnteredBackground += app_EnteredBackground;
- Application.Current.LeavingBackground += app_LeavingBackground;
کاربرد. جاری. برنامه EnteredBackground
در حالت غیر در حال اجرا است. این رویداد راه اندازی می شود و کار پس زمینه از اینجا شروع می شود. فرآیند برنامه وارد فعالیت های پس زمینه می شود و برنامه برای همیشه به حالت تعلیق می رسد. این بهترین مکان برای ذخیره وضعیت جلسه برنامه است.
- private void app_LeavingBackground(object sender, LeavingBackgroundEventArgs e)
- {
- }
مثال: برنامه در دسکتاپ به حداقل رسیده است.
کاربرد. جاری. LeavingBackground
Application وارد حالت Visible می شود. این رویداد فعال میشود، فرآیند برنامه از فعالیتهای پسزمینه خارج میشود و عملکرد مبتنی بر UI را کنترل میکند، این بهترین مکان برای رسیدگی به برنامه فعال شده یا از سرگیری عملکرد رویدادها در اینجا است.
- private void app_EnteredBackground(object sender, EnteredBackgroundEventArgs e) {
- }
مثال: برنامه در دسکتاپ به حداکثر می رسد.