- Multithreading with C# Cookbook(Second Edition)
- Eugene Agafonov
- 327字
- 2021-07-09 19:35:36
Foreground and background threads
This recipe will describe what foreground and background threads are and how setting this option affects the program's behavior.
Getting ready
To work through this recipe, you will need Visual Studio 2015. There are no other prerequisites. The source code for this recipe can be found at BookSamples\Chapter1\Recipe7
.
How to do it...
To understand the effect of foreground and background threads on a program, perform the following steps:
- Start Visual Studio 2015. Create a new C# console application project.
- In the
Program.cs
file, add the followingusing
directives:using System; using System.Threading; using static System.Console; using static System.Threading.Thread;
- Add the following code snippet below the
Main
method:class ThreadSample { private readonly int _iterations; public ThreadSample(int iterations) { _iterations = iterations; } public void CountNumbers() { for (int i = 0; i < _iterations; i++) { Sleep(TimeSpan.FromSeconds(0.5)); WriteLine($"{CurrentThread.Name} prints {i}"); } } }
- Add the following code snippet inside the
Main
method:var sampleForeground = new ThreadSample(10); var sampleBackground = new ThreadSample(20); var threadOne = new Thread(sampleForeground.CountNumbers); threadOne.Name = "ForegroundThread"; var threadTwo = new Thread(sampleBackground.CountNumbers); threadTwo.Name = "BackgroundThread"; threadTwo.IsBackground = true; threadOne.Start(); threadTwo.Start();
- Run the program.
How it works...
When the main program starts, it defines two different threads. By default, a thread that we create explicitly is a foreground thread. To create a background thread, we manually set the IsBackground
property of the threadTwo
object to true
. We configure these threads in a way that the first one will be completed faster, and then we run the program.
After the first thread is complete, the program shuts down and the background thread is terminated. This is the main difference between the two: a process waits for all the foreground threads to complete before finishing the work, but if it has background threads, they just shut down.
It is also important to mention that if a program defines a foreground thread that does not get completed; the main program does not end properly.
- 演進式架構(原書第2版)
- 零基礎玩轉區塊鏈
- Clojure for Domain:specific Languages
- DevOps Automation Cookbook
- Scratch 3游戲與人工智能編程完全自學教程
- Data Analysis with IBM SPSS Statistics
- STM32F0實戰:基于HAL庫開發
- Python數據分析從0到1
- Android系統級深入開發
- Learning R for Geospatial Analysis
- 區塊鏈項目開發指南
- Python青少年趣味編程
- Learning Concurrency in Python
- Greenplum構建實時數據倉庫實踐
- Java核心技術速學版(第3版)