Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menghentikan Benang .NET dengan Selamat?

Bagaimana untuk Menghentikan Benang .NET dengan Selamat?

DDD
DDDasal
2024-12-28 08:24:15898semak imbas

How to Safely Stop a .NET Thread?

Memberhentikan .NET Thread

Dalam pembangunan perisian, kadangkala mungkin perlu untuk menamatkan pelaksanaan thread secara pra-matang. Walau bagaimanapun, penggunaan langsung Thread.Abort() adalah tidak digalakkan kerana potensinya untuk menyebabkan tingkah laku yang tidak dijangka.

Sebaliknya, adalah disyorkan untuk melaksanakan pendekatan kerjasama untuk penamatan rangkaian. Ini melibatkan penciptaan urutan yang memantau bendera boolean, seperti keepGoing, yang menunjukkan sama ada ia harus terus berjalan.

public class WorkerThread
{
    private bool _keepGoing = true;

    public void Run()
    {
        while (_keepGoing)
        {
            // Perform the intended work of the thread.
        }
    }

    public void Stop()
    {
        _keepGoing = false;
    }
}

Pelaksanaan yang disemak ini membolehkan penutupan urutan yang selamat dan teratur apabila kaedah Stop dipanggil , menghalang kesan tidak diingini Thread.Abort().

Selain itu, urutan yang mungkin menghadapi operasi menyekat, seperti Tidur atau Tunggu, hendaklah bersedia untuk mengendalikan ThreadInterruptedException dan keluar dengan anggun.

try
{
    while (_keepGoing)
    {
        // Perform the intended work of the thread.
    }
}
catch (ThreadInterruptedException exception)
{
    // Handle the interruption and perform necessary cleanup.
}

Dengan melaksanakan pendekatan kerjasama untuk penamatan rangkaian ini, pembangun boleh mengekalkan kawalan ke atas kitaran hayat urutan mereka, memastikan pelaksanaan aplikasi yang boleh dipercayai dan boleh diramal.

Atas ialah kandungan terperinci Bagaimana untuk Menghentikan Benang .NET dengan Selamat?. 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