Rumah pembangunan bahagian belakang Tutorial C#.Net Gambaran keseluruhan benang Benang dalam C#

Gambaran keseluruhan benang Benang dalam C#

Feb 18, 2024 am 11:20 AM
thread c# Pengenalan kepada benang

Gambaran keseluruhan benang Benang dalam C#

Pengenalan kepada Thread dalam C#, contoh kod khusus diperlukan

Dalam C#, Thread (benang) ialah laluan pelaksanaan bebas untuk melaksanakan kod. Dengan menggunakan benang, kami boleh melaksanakan pelbagai tugas secara selari dan meningkatkan prestasi dan responsif program. Artikel ini akan memperkenalkan konsep asas, penggunaan dan contoh kod berkaitan benang Benang dalam C#.

1. Konsep asas benang
Benang ialah unit pelaksanaan asas dalam sistem pengendalian. Dalam C#, kelas Thread ialah alat utama untuk mencipta dan memanipulasi benang. Benang boleh melaksanakan berbilang tugas pada masa yang sama, membolehkan program bertindak balas kepada berbilang permintaan pada masa yang sama. Benang boleh melakukan pengiraan atau melakukan operasi yang memakan masa di latar belakang program tanpa menyekat utas utama program, dengan itu meningkatkan prestasi program dan pengalaman pengguna.

2. Cipta dan mulakan utas
Dalam C#, gunakan kelas Thread untuk mencipta dan memulakan utas baharu. Berikut ialah contoh kod ringkas:

using System;
using System.Threading;

namespace ThreadExample
{
    class Program
    {
        // 创建线程执行的方法
        static void ThreadMethod()
        {
            Console.WriteLine("Thread is running...");
            // 线程执行的逻辑代码
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine($"Thread: {i}");
                Thread.Sleep(1000); // 模拟线程执行耗时操作
            }
            Console.WriteLine("Thread finished.");
        }
        
        static void Main(string[] args)
        {
            // 创建新线程并启动
            Thread thread = new Thread(ThreadMethod);
            thread.Start();

            // 主线程的逻辑代码
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine($"Main: {i}");
                Thread.Sleep(500);
            }

            // 等待新线程执行完毕
            thread.Join();

            Console.WriteLine("All threads finished.");
        }
    }
}
Salin selepas log masuk

Dalam contoh di atas, kami mula-mula mentakrifkan kaedah statik ThreadMethod() sebagai titik masuk untuk pelaksanaan utas baharu. Kaedah Thread.Sleep() digunakan untuk mensimulasikan operasi yang memakan masa dalam benang. Dalam kaedah Main(), kami mencipta benang baharu dan memulakannya melalui kaedah Mula(). Pada masa yang sama, terdapat juga beberapa kod logik dalam utas utama. Dengan memanggil kaedah Join() , anda boleh memastikan program keluar selepas urutan baharu selesai melaksanakan.

3. Status dan kawalan benang
Dalam kitaran hayat benang, benang mempunyai keadaan yang berbeza, termasuk: tidak dimulakan, berjalan, disekat, ditamatkan, dsb. Anda boleh menggunakan jenis penghitungan ThreadState untuk mendapatkan keadaan benang. Selain itu, kami juga boleh menggunakan beberapa kaedah untuk mengawal pelaksanaan utas, termasuk: jeda, sambung semula, batal, dsb. Berikut ialah contoh kod:

using System;
using System.Threading;

namespace ThreadControlExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建并启动新线程
            Thread thread1 = new Thread(ThreadMethod);
            thread1.Start();

            // 暂停线程
            Thread.Sleep(2000);

            // 恢复线程
            thread1.Resume();

            // 等待线程执行完毕
            thread1.Join();

            // 创建并启动新线程
            Thread thread2 = new Thread(ThreadMethod);
            thread2.Start();

            // 取消线程
            thread2.Abort();

            Console.WriteLine("Thread control finished.");
        }

        static void ThreadMethod()
        {
            try
            {
                Console.WriteLine("Thread is running...");
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine($"Thread: {i}");
                    Thread.Sleep(1000);
                }
                Console.WriteLine("Thread finished.");
            }
            catch (ThreadAbortException ex)
            {
                Console.WriteLine("Thread aborted.");
            }
        }
    }
}
Salin selepas log masuk

Dalam contoh, kami menjeda pelaksanaan utas melalui kaedah Sleep(). Kemudian gunakan kaedah Resume() untuk menyambung semula pelaksanaan thread. Kaedah Abort() digunakan untuk membatalkan pelaksanaan thread. Dalam kaedah ThreadMethod(), kami mengendalikan situasi apabila utas dibatalkan dengan menangkap pengecualian ThreadAbortException.

Ringkasan:
Kelas Benang dalam C# menyediakan fungsi berkuasa untuk mencipta dan mengendalikan benang. Dalam pengaturcaraan berbilang benang, kita boleh menggunakan benang untuk melaksanakan berbilang tugas secara selari untuk meningkatkan prestasi program dan pengalaman pengguna. Artikel ini memperkenalkan konsep asas utas, kaedah mencipta dan memulakan utas, dan status dan kawalan utas. Saya harap kandungan ini dapat memberikan sedikit bantuan untuk anda memahami dan menggunakan benang Benang dalam C#.

Atas ialah kandungan terperinci Gambaran keseluruhan benang Benang dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Direktori Aktif dengan C# Direktori Aktif dengan C# Sep 03, 2024 pm 03:33 PM

Panduan untuk Active Directory dengan C#. Di sini kita membincangkan pengenalan dan cara Active Directory berfungsi dalam C# bersama-sama dengan sintaks dan contoh.

C# Serialisasi C# Serialisasi Sep 03, 2024 pm 03:30 PM

Panduan untuk Pensirian C#. Di sini kita membincangkan pengenalan, langkah-langkah objek siri C#, kerja, dan contoh masing-masing.

Penjana Nombor Rawak dalam C# Penjana Nombor Rawak dalam C# Sep 03, 2024 pm 03:34 PM

Panduan untuk Penjana Nombor Rawak dalam C#. Di sini kita membincangkan cara Penjana Nombor Rawak berfungsi, konsep nombor pseudo-rawak dan selamat.

Paparan Grid Data C# Paparan Grid Data C# Sep 03, 2024 pm 03:32 PM

Panduan untuk Paparan Grid Data C#. Di sini kita membincangkan contoh cara paparan grid data boleh dimuatkan dan dieksport daripada pangkalan data SQL atau fail excel.

Corak dalam C# Corak dalam C# Sep 03, 2024 pm 03:33 PM

Panduan kepada Corak dalam C#. Di sini kita membincangkan pengenalan dan 3 jenis Corak teratas dalam C# bersama-sama dengan contoh dan pelaksanaan kodnya.

Faktorial dalam C# Faktorial dalam C# Sep 03, 2024 pm 03:34 PM

Panduan untuk Faktorial dalam C#. Di sini kita membincangkan pengenalan kepada faktorial dalam c# bersama-sama dengan contoh dan pelaksanaan kod yang berbeza.

Nombor Perdana dalam C# Nombor Perdana dalam C# Sep 03, 2024 pm 03:35 PM

Panduan Nombor Perdana dalam C#. Di sini kita membincangkan pengenalan dan contoh nombor perdana dalam c# bersama dengan pelaksanaan kod.

Perbezaan antara multithreading dan asynchronous C# Perbezaan antara multithreading dan asynchronous C# Apr 03, 2025 pm 02:57 PM

Perbezaan antara multithreading dan asynchronous adalah bahawa multithreading melaksanakan pelbagai benang pada masa yang sama, sementara secara tidak sengaja melakukan operasi tanpa menyekat benang semasa. Multithreading digunakan untuk tugas-tugas yang berintensifkan, sementara asynchronously digunakan untuk interaksi pengguna. Kelebihan multi-threading adalah untuk meningkatkan prestasi pengkomputeran, sementara kelebihan asynchronous adalah untuk tidak menghalang benang UI. Memilih multithreading atau asynchronous bergantung kepada sifat tugas: tugas-tugas intensif pengiraan menggunakan multithreading, tugas yang berinteraksi dengan sumber luaran dan perlu menyimpan respons UI menggunakan asynchronous.

See all articles