如何区分c# 前台和后台线程
Net
的公用语言运行时(Common Language Runtime,CLR)能区分两种不同类型的线程:前台线程和后台线程。这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束。
这么说可能不知道有什么区别:
<strong>前台线程</strong>
和后台线程
的区别和联系:
1、后台线程不会阻止进程的终止。属于某个进程的所有前台线程都终止后,该进程就会被终止。所有剩余的后台线程都会停止且不会完成。
2、可以在任何时候将前台线程修改为后台线程,方式是设置Thread.IsBackground 属性。
3、不管是前台线程还是后台线程,如果线程内出现了异常,都会导致进程的终止。
4、托管线程池中的线程都是后台线程,使用new Thread方式创建的线程默认都是前台线程。
.net
环境使用Thread建立的线程默认情况下是前台线程,即线程属性IsBackground=false,在进程中,只要有一个前台线程未退出,进程就不会终止。主线程就是一个前台线程。而后台线程不管线程是否结束,只要所有的前台线程都退出(包括正常退出和异常退出)后,进程就会自动终止。一般后台线程用于处理时间较短的任务,如在一个Web服务器中可以利用后台线程来处理客户端发过来的请求信息。而前台线程一般用于处理需要长时间等待的任务,如在Web服务器中的监听客户端请求的程序,或是定时对某些系统资源进行扫描的程序。
案例
static void Main(string[] args) { SampleTread thead = new SampleTread(10); SampleTread theadback = new SampleTread(10); var theadone = new Thread(thead.CountNumbers); var theadtwo = new Thread(theadback.CountNumbers); theadtwo.IsBackground = true; theadone.Start(); theadtwo.Start(); }
class SampleTread { private readonly int _iterations; public SampleTread(int iterations) { this._iterations = iterations; } public void CountNumbers() { for (int i = 0; i < _iterations; i++) { Sleep(TimeSpan.FromSeconds(0.5)); Console.WriteLine($"{ CurrentThread.Name}print{i}"); } } }
分析
运行结果为,当前台线程执行完毕后那么后台线程也会退出。其实在操作系统中根本就没有前后线程这个概念,那么为什么会有这个东西呢?
意义何在?本来是这样子的当我们的主线程结束的时候其他线程也应该结束,因为释放了我们的线程对象了,如果主线程结束的时候不释放其他线程那么其他线程的危害性真的太大了,所以c#为我们提供了前台线程和后台线程这个概念让操作线程变得比较简单。
至于怎么用,看具体项目了,后台线程往往起到辅助性的功能。比如说winform,在关闭窗口后线程进程依然没有关闭,这就是因为关闭close后去执行关闭主线程,其他线程关闭后主线程才会安全关闭。
这就是为什么你还可以看到其他线程的原因,当然你看到还有其他线程的原因可能是多个进程,其他进程的主线程没有关闭,这个需要具体分析了。
相关学习推荐:C视频教程
Atas ialah kandungan terperinci 如何区分c# 前台和后台线程. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Pemalar juga dipanggil pembolehubah dan apabila ditakrifkan, nilainya tidak berubah semasa pelaksanaan program. Oleh itu, kita boleh mengisytiharkan pembolehubah sebagai pemalar merujuk nilai tetap. Ia juga dipanggil teks. Pemalar mesti ditakrifkan menggunakan kata kunci Const. Sintaks Sintaks pemalar yang digunakan dalam bahasa pengaturcaraan C adalah seperti berikut - consttypeVariableName; ,34, 4567 Pemalar titik terapung - Contoh: 0.0, 156.89, 23.456 Pemalar perlapanan dan Perenambelasan - Contoh: Hex: 0x2a, 0xaa.. Octal

Kod VS dan Visual Studio C++ IntelliSense mungkin tidak dapat mengambil perpustakaan, terutamanya apabila bekerja pada projek besar. Apabila kami menuding pada #Include<wx/wx.h>, kami melihat mesej ralat "Tidak boleh Membuka fail sumber 'string.h'" (bergantung pada "wx/wx.h") dan kadangkala, Fungsi autolengkap tidak bertindak balas. Dalam artikel ini kita akan melihat perkara yang boleh anda lakukan jika VSCode dan VSC++ IntelliSense tidak berfungsi atau mengekstrak perpustakaan. Mengapa Intellisense saya tidak berfungsi dalam C++? Apabila bekerja dengan fail besar, kadangkala IntelliSense

Adakah anda tidak dapat membeli atau menonton kandungan pada Xbox anda kerana kod ralat 8C230002? Sesetengah pengguna terus mendapat ralat ini apabila cuba membeli atau menonton kandungan pada konsol mereka. Maaf, terdapat masalah dengan perkhidmatan Xbox. Cuba lagi nanti. Untuk bantuan dengan isu ini, lawati www.xbox.com/errorhelp. Kod Status: 8C230002 Kod ralat ini biasanya disebabkan oleh masalah pelayan atau rangkaian sementara. Walau bagaimanapun, mungkin terdapat sebab lain, seperti tetapan privasi akaun anda atau kawalan ibu bapa, yang mungkin menghalang anda daripada membeli atau melihat kandungan tertentu. Betulkan Kod Ralat Xbox 8C230002 Jika anda menerima kod ralat 8C semasa cuba menonton atau membeli kandungan pada konsol Xbox anda

Kami mengambil tatasusunan integer Arr[] sebagai input. Matlamatnya adalah untuk mencari elemen terbesar dan terkecil dalam tatasusunan menggunakan kaedah rekursif. Memandangkan kami menggunakan rekursi, kami akan mengulangi keseluruhan tatasusunan sehingga kami mencapai panjang = 1 dan kemudian mengembalikan A[0], yang membentuk huruf asas. Jika tidak, elemen semasa dibandingkan dengan nilai minimum atau maksimum semasa dan nilainya dikemas kini secara rekursif untuk elemen berikutnya. Mari kita lihat pelbagai senario input dan output untuk −Input −Arr={12,67,99,76,32}; Nilai maksimum dalam tatasusunan: 99 Penjelasan &mi

Menurut berita pada 25 Mei, China Eastern Airlines mendedahkan perkembangan terkini pesawat penumpang C919 pada mesyuarat taklimat prestasi. Menurut syarikat itu, perjanjian pembelian C919 yang ditandatangani dengan COMAC telah berkuat kuasa secara rasmi pada Mac 2021, dan pesawat C919 pertama telah dihantar menjelang akhir 2022. Dijangkakan pesawat itu akan mula beroperasi secara rasmi tidak lama lagi. China Eastern Airlines akan menggunakan Shanghai sebagai pangkalan utamanya untuk operasi komersial C919, dan merancang untuk memperkenalkan sejumlah lima pesawat penumpang C919 pada 2022 dan 2023. Syarikat itu menyatakan bahawa rancangan pengenalan masa depan akan ditentukan berdasarkan keadaan operasi sebenar dan perancangan rangkaian laluan. Menurut pemahaman editor, C919 ialah pesawat penumpang satu lorong utama generasi baharu China dengan hak harta intelek bebas sepenuhnya di dunia, dan ia mematuhi piawaian kelayakan udara yang diterima di peringkat antarabangsa. sepatutnya

Memaparkan nombor dalam format yang berbeza adalah salah satu masalah pengekodan asas pembelajaran. Konsep pengekodan yang berbeza seperti pernyataan bersyarat dan pernyataan gelung. Terdapat program yang berbeza di mana kami menggunakan aksara khas seperti asterisk untuk mencetak segi tiga atau segi empat sama. Dalam artikel ini, kami akan mencetak nombor dalam bentuk lingkaran, sama seperti petak dalam C++. Kami mengambil bilangan baris n sebagai input dan bermula dari sudut kiri atas dan bergerak ke kanan, kemudian ke bawah, kemudian ke kiri, kemudian ke atas, kemudian ke kanan lagi, dan seterusnya dan seterusnya. Corak lingkaran dengan nombor 123456724252627282982340414243309223948494431102138474645321120373635343312191817161514

Menurut Indeks Komuniti Pengaturcaraan TIOBE, salah satu penanda aras untuk mengukur populariti bahasa pengaturcaraan, ia dinilai dengan mengumpul data daripada jurutera, kursus, vendor dan enjin carian di seluruh dunia. Indeks TIOBE pada Januari 2024 telah dikeluarkan baru-baru ini, dan kedudukan bahasa pengaturcaraan rasmi untuk 2023 telah diumumkan memenangi Bahasa Pengaturcaraan TIOBE 2023 Ini adalah kali pertama C# memenangi penghormatan ini dalam tempoh 23 tahun. Siaran akhbar rasmi TIOBE menyatakan bahawa C# telah berada dalam 10 teratas selama lebih daripada 20 tahun Kini ia mengejar empat bahasa utama dan telah menjadi bahasa pengaturcaraan dengan pertumbuhan terbesar dalam satu tahun (+1.43%). Memang layak untuk memenangi anugerah ini. Kedudukan kedua ialah Scratch (+0.83%) dan Fortran (+0

void dalam C ialah kata kunci khas yang digunakan untuk mewakili jenis kosong, yang bermaksud data tanpa jenis tertentu. Dalam bahasa C, void biasanya digunakan dalam tiga aspek berikut. Jenis pulangan fungsi adalah tidak sah Dalam bahasa C, fungsi boleh mempunyai jenis pulangan yang berbeza, seperti int, float, char, dll. Walau bagaimanapun, jika fungsi tidak mengembalikan sebarang nilai, jenis pulangan boleh ditetapkan kepada batal. Ini bermakna bahawa selepas fungsi itu dilaksanakan, ia tidak mengembalikan nilai tertentu. Contohnya: voidhelloWorld()
