Bagikan melalui


ThreadState Enum

Definisi

Menentukan status eksekusi Thread.

Enumerasi ini mendukung kombinasi bitwise dari nilai yang termasuk di dalamnya.

public enum class ThreadState
[System.Flags]
public enum ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
public enum ThreadState
[System.Flags]
[System.Serializable]
public enum ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum ThreadState
[<System.Flags>]
type ThreadState = 
[<System.Flags>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ThreadState = 
[<System.Flags>]
[<System.Serializable>]
type ThreadState = 
[<System.Flags>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type ThreadState = 
Public Enum ThreadState
Warisan
ThreadState
Atribut

Bidang

Nama Nilai Deskripsi
Running 0

Utas telah dimulai dan belum dihentikan.

StopRequested 1

Utas diminta untuk berhenti. Ini hanya untuk penggunaan internal.

SuspendRequested 2

Utas diminta untuk ditangguhkan.

Background 4

Utas sedang dijalankan sebagai utas latar belakang, dibandingkan dengan utas latar depan. Status ini dikontrol dengan mengatur IsBackground properti .

Unstarted 8

Metode Start() belum dipanggil pada utas.

Stopped 16

Utas telah berhenti.

WaitSleepJoin 32

Utas diblokir. Ini bisa menjadi hasil dari panggilan Sleep(Int32) atau Join(), dari meminta kunci - misalnya, dengan memanggil Enter(Object) atau Wait(Object, Int32, Boolean) - atau menunggu pada objek sinkronisasi utas seperti ManualResetEvent.

Suspended 64

Utas telah ditangguhkan.

AbortRequested 128

Metode Abort(Object) ini telah dipanggil pada utas, tetapi utas belum menerima tertunda ThreadAbortException yang akan mencoba mengakhirinya.

Aborted 256

Status utas termasuk AbortRequested dan utas sekarang mati, tetapi statusnya belum berubah menjadi Stopped.

Keterangan

Enumerasi ThreadState mendefinisikan serangkaian semua kemungkinan status eksekusi untuk utas. Ini hanya menarik dalam beberapa skenario penelusuran kesalahan. Kode Anda tidak boleh menggunakan status utas untuk menyinkronkan aktivitas utas.

Setelah utas dibuat, utas berada di setidaknya salah satu status sampai berakhir. Utas yang dibuat dalam runtime bahasa umum awalnya dalam Unstarted status, sementara utas eksternal, atau tidak terkelola yang masuk ke runtime sudah dalam Running status. Utas ditransisikan dari Unstarted status ke status Running dengan memanggil Thread.Start. Setelah utas meninggalkan status sebagai hasil panggilan ke , utas Unstarted tidak pernah dapat kembali ke statusUnstarted.Start

Utas dapat berada dalam lebih dari satu status pada waktu tertentu. Misalnya, jika utas diblokir pada panggilan ke Monitor.Wait, dan panggilan utas lain pada utas yang diblokir, utas Thread.Abort yang diblokir akan berada di status WaitSleepJoin dan AbortRequested pada saat yang sama. Dalam hal ini, segera setelah utas kembali dari panggilan ke Monitor.Wait atau terganggu, itu akan menerima ThreadAbortException untuk mulai membatalkan. Tidak semua kombinasi nilai valid; misalnya, utas ThreadState tidak dapat berada di status Aborted dan Unstarted .

Sebuah utas tidak pernah bisa meninggalkan status Stopped .

Penting

Ada dua enumerasi status utas: System.Threading.ThreadState dan System.Diagnostics.ThreadState.

Tabel berikut ini memperlihatkan tindakan yang menyebabkan perubahan status.

Action ThreadState
Utas dibuat dalam runtime bahasa umum. Unstarted
Utas lain memanggil metode pada utas Thread.Start baru, dan panggilan kembali.

Metode Start tidak kembali sampai utas baru mulai berjalan. Tidak ada cara untuk mengetahui pada titik mana utas baru akan mulai berjalan, selama panggilan ke Start.
Running
Utas memanggil Sleep WaitSleepJoin
Utas Monitor.Wait memanggil pada objek lain. WaitSleepJoin
Utas memanggil utas Join lain. WaitSleepJoin
Panggilan utas lain Interrupt Running
Panggilan utas lain Suspend SuspendRequested
Utas merespons Suspend permintaan. Suspended
Panggilan utas lain Resume Running
Panggilan utas lain Abort AbortRequested
Utas merespons Abort permintaan. Stopped
Utas dihentikan. Stopped

Selain status yang disebutkan di atas, ada juga Background status, yang menunjukkan apakah utas berjalan di latar belakang atau latar depan. Untuk informasi selengkapnya, lihat Latar Depan dan Latar Belakang Thread.

Properti Thread.ThreadState utas menyediakan status utas saat ini. Aplikasi harus menggunakan masker bit untuk menentukan apakah utas berjalan. Karena nilai untuk Running adalah nol (0), uji apakah utas berjalan dengan kode berikut:

(myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0
(myThread.ThreadState And (ThreadState.Stopped Or ThreadState.Unstarted)) = 0

Berlaku untuk

Lihat juga