- Multithreading in C# 5.0 Cookbook
- Eugene Agafonov
- 317字
- 2021-07-21 18:10:00
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 2012. 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:
- Start Visual Studio 2012. Create a new C# Console Application project.
- In the
Program.cs
file, add the followingusing
directives:using System; using System.Threading;
- 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++) { Thread.Sleep(TimeSpan.FromSeconds(0.5)); Console.WriteLine("{0} prints {1}", Thread.CurrentThread.Name, 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 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 complete faster, and then we run the program.
After the first thread completes, the program shuts down and the background thread terminates. 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 complete, the main program will not end properly.
- 高手是如何做產品設計的(全2冊)
- JavaScript百煉成仙
- Android項目開發入門教程
- PHP 7底層設計與源碼實現
- Unity 2020 Mobile Game Development
- 基于SpringBoot實現:Java分布式中間件開發入門與實戰
- Spring Boot+MVC實戰指南
- Clojure for Machine Learning
- 零基礎學Python編程(少兒趣味版)
- Mastering OpenStack
- 關系數據庫與SQL Server 2012(第3版)
- Koa與Node.js開發實戰
- VMware vSphere Design Essentials
- Splunk Essentials
- Python人工智能項目實戰