Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan model pengaturcaraan serentak untuk mengendalikan tugas tak segerak dalam C#

Cara menggunakan model pengaturcaraan serentak untuk mengendalikan tugas tak segerak dalam C#

WBOY
WBOYasal
2023-10-08 10:14:06663semak imbas

Cara menggunakan model pengaturcaraan serentak untuk mengendalikan tugas tak segerak dalam C#

Cara menggunakan model pengaturcaraan serentak untuk mengendalikan tugas tak segerak dalam C# memerlukan contoh kod khusus

Pengenalan:
Dalam pembangunan perisian harian, memproses tugas tak segerak adalah keperluan yang sangat biasa. Dalam C#, kita boleh menggunakan model pengaturcaraan serentak untuk mengendalikan tugas tak segerak dan meningkatkan prestasi dan responsif program. Artikel ini akan memperkenalkan model pengaturcaraan serentak dalam C# dan cara menggunakannya untuk mengendalikan tugas tak segerak, dan memberikan contoh kod khusus.

1. Gambaran Keseluruhan Model Pengaturcaraan Serentak
Pengaturcaraan serentak merujuk kepada keupayaan untuk mempunyai berbilang rangkaian atau proses yang dilaksanakan pada masa yang sama dalam sistem komputer. Pengaturcaraan serentak boleh meningkatkan penggunaan sistem komputer dan membolehkan program bertindak balas dengan lebih baik kepada operasi pengguna. Dalam C#, terdapat banyak cara untuk melaksanakan pengaturcaraan serentak, seperti pengaturcaraan berbilang benang, perpustakaan selari tugas (TPL) dan model pengaturcaraan tak segerak (async/menunggu).

2. Pengaturcaraan berbilang benang
Pengaturcaraan berbilang benang ialah model pengaturcaraan serentak yang paling asas. Dalam C#, benang boleh dibuat dan diurus menggunakan kelas Thread atau kelas ThreadPool.

Berikut ialah contoh kod yang menggunakan kelas Thread untuk mencipta dan memulakan thread:

using System;
using System.Threading;

class Program
{
    static void Main()
    {
        Thread t = new Thread(DoWork);
        t.Start();

        // 主线程继续执行其他操作

        t.Join();
        Console.WriteLine("任务完成");
    }

    static void DoWork()
    {
        // 执行异步任务的代码
        Console.WriteLine("正在执行任务...");
        Thread.Sleep(2000); // 模拟异步操作
        Console.WriteLine("任务执行完毕");
    }
}

Kod di atas mencipta thread t baharu dan memanggil kaedah DoWork untuk melaksanakan tugas tak segerak. Benang utama boleh terus melaksanakan operasi lain tanpa menunggu tugas tak segerak selesai.

3. Task Parallel Library (TPL)
Task Parallel Library (TPL) ialah model pengaturcaraan serentak lanjutan yang disediakan oleh Rangka Kerja .NET Ia merangkumi penciptaan dan pengurusan urutan, menjadikan penulisan kod serentak lebih mudah dan lebih dipercayai.

Berikut ialah contoh kod yang menggunakan TPL untuk memproses tugas tak segerak:

using System;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        Task.Run(() => DoWork())
            .ContinueWith(t => Console.WriteLine("任务完成"));

        // 主线程继续执行其他操作

        Console.ReadKey();
    }

    static void DoWork()
    {
        // 执行异步任务的代码
        Console.WriteLine("正在执行任务...");
        Task.Delay(2000).Wait(); // 模拟异步操作
        Console.WriteLine("任务执行完毕");
    }
}

Kod di atas menggunakan kaedah Task.Run untuk mencipta tugas baharu dan menghantar dalam ungkapan Lambda sebagai badan pelaksanaan tugas itu, dan kemudian menggunakan kaedah ContinueWith untuk mendaftarkan fungsi Panggilan Balik tugas selepas selesai. Dalam fungsi panggil balik, kita boleh melakukan beberapa operasi lain, seperti memberitahu pengguna bahawa tugas itu telah selesai.

4. Model pengaturcaraan tak segerak (tak segerak/menunggu)
Model pengaturcaraan tak segerak (tak segerak/menunggu) ialah model pengaturcaraan serentak baharu yang diperkenalkan dalam .NET Framework 4.5, yang boleh memudahkan struktur kod pengaturcaraan tak segerak.

Berikut ialah contoh kod yang menggunakan model pengaturcaraan tak segerak untuk mengendalikan tugas tak segerak:

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        await DoWorkAsync();
        Console.WriteLine("任务完成");

        // 主线程继续执行其他操作

        Console.ReadKey();
    }

    static async Task DoWorkAsync()
    {
        // 执行异步任务的代码
        Console.WriteLine("正在执行任务...");
        await Task.Delay(2000); // 模拟异步操作
        Console.WriteLine("任务执行完毕");
    }
}

Kod di atas menggunakan tak segerak dan menunggu kata kunci untuk menandakan kaedah tak segerak dan operasi tak segerak, menjadikan kod itu kelihatan lebih seperti pelaksanaan berurutan segerak.

Ringkasan:
Di atas memperkenalkan model pengaturcaraan serentak dalam C# dan cara menggunakannya untuk mengendalikan tugas tak segerak, termasuk pengaturcaraan berbilang benang, perpustakaan selari tugasan dan model pengaturcaraan tak segerak. Berdasarkan keperluan dan senario tertentu, kami boleh memilih model pengaturcaraan serentak yang sesuai untuk mengendalikan tugas tak segerak dan meningkatkan prestasi dan responsif program.

Nota:
Dalam pembangunan sebenar, kita perlu memberi perhatian kepada beberapa isu pengaturcaraan serentak, seperti keselamatan benang, kebuntuan dan pengurusan sumber. Pada masa yang sama, kita juga perlu memilih model pengaturcaraan serentak yang sesuai berdasarkan keperluan dan senario tertentu, supaya program mempunyai prestasi dan kebolehskalaan yang lebih baik.

Atas ialah kandungan terperinci Cara menggunakan model pengaturcaraan serentak untuk mengendalikan tugas tak segerak dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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