Share via


Monitor.Wait Metode

Definisi

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci.

Overload

Wait(Object, Int32, Boolean)

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval waktu habis yang ditentukan berlalu, utas akan memasuki antrean siap. Metode ini juga menentukan apakah domain sinkronisasi untuk konteks (jika dalam konteks yang disinkronkan) keluar sebelum menunggu dan diminta kembali setelahnya.

Wait(Object)

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci.

Wait(Object, Int32)

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval waktu habis yang ditentukan berlalu, utas akan memasuki antrean siap.

Wait(Object, TimeSpan)

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval waktu habis yang ditentukan berlalu, utas akan memasuki antrean siap.

Wait(Object, TimeSpan, Boolean)

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval waktu habis yang ditentukan berlalu, utas akan memasuki antrean siap. Secara opsional keluar dari domain sinkronisasi untuk konteks yang disinkronkan sebelum menunggu dan memperoleh kembali domain setelahnya.

Wait(Object, Int32, Boolean)

Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval waktu habis yang ditentukan berlalu, utas akan memasuki antrean siap. Metode ini juga menentukan apakah domain sinkronisasi untuk konteks (jika dalam konteks yang disinkronkan) keluar sebelum menunggu dan diminta kembali setelahnya.

public:
 static bool Wait(System::Object ^ obj, int millisecondsTimeout, bool exitContext);
public static bool Wait (object obj, int millisecondsTimeout, bool exitContext);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait (object obj, int millisecondsTimeout, bool exitContext);
static member Wait : obj * int * bool -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * int * bool -> bool
Public Shared Function Wait (obj As Object, millisecondsTimeout As Integer, exitContext As Boolean) As Boolean

Parameter

obj
Object

Objek tempat menunggu.

millisecondsTimeout
Int32

Jumlah milidetik untuk menunggu sebelum utas memasuki antrean siap.

exitContext
Boolean

true untuk keluar dan memperoleh kembali domain sinkronisasi untuk konteks (jika dalam konteks yang disinkronkan) sebelum menunggu; jika tidak, false.

Mengembalikan

true jika kunci diperoleh kembali sebelum waktu yang ditentukan berlalu; false jika kunci diperoleh kembali setelah waktu yang ditentukan berlalu. Metode tidak kembali sampai kunci diterima kembali.

Atribut

Pengecualian

Parameternya obj adalah null.

Wait tidak dipanggil dari dalam blok kode yang disinkronkan.

Utas Wait yang memanggil kemudian terganggu dari status menunggu. Ini terjadi ketika utas lain memanggil metode utas Interrupt() ini.

Nilai millisecondsTimeout parameter negatif, dan tidak sama dengan Infinite.

Keterangan

Untuk informasi selengkapnya tentang API ini, lihat Keterangan API Tambahan untuk Monitor.Wait.

Lihat juga

Berlaku untuk

Wait(Object)

Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci.

public:
 static bool Wait(System::Object ^ obj);
public static bool Wait (object obj);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait (object obj);
static member Wait : obj -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj -> bool
Public Shared Function Wait (obj As Object) As Boolean

Parameter

obj
Object

Objek tempat menunggu.

Mengembalikan

true jika panggilan dikembalikan karena penelepon memperoleh kembali kunci untuk objek yang ditentukan. Metode ini tidak mengembalikan jika kunci tidak diterima kembali.

Atribut

Pengecualian

Parameternya obj adalah null.

Utas panggilan tidak memiliki kunci untuk objek yang ditentukan.

Utas Wait yang memanggil kemudian terganggu dari status menunggu. Ini terjadi ketika utas lain memanggil metode utas Interrupt() ini.

Keterangan

Utas yang saat ini memiliki kunci pada objek yang ditentukan memanggil metode ini untuk melepaskan objek sehingga utas lain dapat mengaksesnya. Penelepon diblokir saat menunggu untuk memperoleh kembali kunci. Metode ini dipanggil ketika pemanggil perlu menunggu perubahan status yang akan terjadi sebagai akibat dari operasi utas lain.

Saat utas Waitmemanggil , utas melepaskan kunci pada objek dan memasuki antrean tunggu objek. Utas berikutnya dalam antrean siap objek (jika ada) memperoleh kunci dan memiliki penggunaan objek secara eksklusif. Semua utas yang memanggil Wait tetap dalam antrean tunggu sampai mereka menerima sinyal dari Pulse atau PulseAll, dikirim oleh pemilik kunci. Jika Pulse dikirim, hanya utas di kepala antrean tunggu yang terpengaruh. Jika PulseAll dikirim, semua utas yang menunggu objek terpengaruh. Ketika sinyal diterima, satu atau beberapa utas meninggalkan antrean tunggu dan memasukkan antrean siap. Utas dalam antrean siap diizinkan untuk memperoleh kembali kunci.

Metode ini kembali ketika utas panggilan memperoleh kembali kunci pada objek. Perhatikan bahwa metode ini memblokir tanpa batas waktu jika pemegang kunci tidak memanggil Pulse atau PulseAll.

Pemanggil dijalankan Wait sekali, terlepas dari berapa kali Enter telah dipanggil untuk objek yang ditentukan. Secara konseptual, Wait metode menyimpan berapa kali pemanggil dipanggil Enter pada objek dan memanggil Exit sebanyak yang diperlukan untuk sepenuhnya melepaskan objek yang terkunci. Penelepon kemudian memblokir sambil menunggu untuk memperoleh kembali objek. Ketika penelepon memperoleh kembali kunci, sistem memanggil Enter sebanyak yang diperlukan untuk memulihkan jumlah tersimpan Enter untuk pemanggil. Panggilan melepaskan Wait kunci hanya untuk objek yang ditentukan; jika penelepon adalah pemilik kunci pada objek lain, kunci ini tidak dilepaskan.

Perhatikan bahwa objek yang disinkronkan menyimpan beberapa referensi, termasuk referensi ke utas yang saat ini memegang kunci, referensi ke antrean siap, yang berisi utas yang siap untuk mendapatkan kunci, dan referensi ke antrean tunggu, yang berisi utas yang menunggu pemberitahuan perubahan status objek.

Metode Pulse, PulseAll, dan Wait harus dipanggil dari dalam blok kode yang disinkronkan.

Keterangan untuk metode menjelaskan Pulse apa yang terjadi jika Pulse dipanggil ketika tidak ada utas yang menunggu.

Lihat juga

Berlaku untuk

Wait(Object, Int32)

Sumber:
Monitor.CoreCLR.cs
Sumber:
Monitor.CoreCLR.cs
Sumber:
Monitor.CoreCLR.cs

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval waktu habis yang ditentukan berlalu, utas akan memasuki antrean siap.

public:
 static bool Wait(System::Object ^ obj, int millisecondsTimeout);
public static bool Wait (object obj, int millisecondsTimeout);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait (object obj, int millisecondsTimeout);
static member Wait : obj * int -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * int -> bool
Public Shared Function Wait (obj As Object, millisecondsTimeout As Integer) As Boolean

Parameter

obj
Object

Objek tempat menunggu.

millisecondsTimeout
Int32

Jumlah milidetik untuk menunggu sebelum utas memasuki antrean siap.

Mengembalikan

true jika kunci diperoleh kembali sebelum waktu yang ditentukan berlalu; false jika kunci diperoleh kembali setelah waktu yang ditentukan berlalu. Metode tidak kembali sampai kunci diterima kembali.

Atribut

Pengecualian

Parameternya obj adalah null.

Utas panggilan tidak memiliki kunci untuk objek yang ditentukan.

Utas Wait yang memanggil kemudian terganggu dari status menunggu. Ini terjadi ketika utas lain memanggil metode utas Interrupt() ini.

Nilai millisecondsTimeout parameter negatif, dan tidak sama dengan Infinite.

Keterangan

Metode ini tidak kembali sampai memperoleh kembali kunci eksklusif pada obj parameter .

Utas yang saat ini memiliki kunci pada objek yang ditentukan memanggil metode ini untuk melepaskan objek sehingga utas lain dapat mengaksesnya. Penelepon diblokir saat menunggu untuk memperoleh kembali kunci. Metode ini dipanggil ketika pemanggil perlu menunggu perubahan status yang akan terjadi sebagai akibat dari operasi utas lain.

Waktu habis memastikan bahwa utas saat ini tidak memblokir tanpa batas waktu jika utas lain melepaskan kunci tanpa terlebih dahulu memanggil Pulse metode atau PulseAll . Ini juga memindahkan utas ke antrean siap, melewati utas lain di depannya dalam antrean tunggu, sehingga dapat memperoleh kembali kunci lebih cepat. Utas dapat menguji nilai Wait pengembalian metode untuk menentukan apakah ia memperoleh kembali kunci sebelum waktu habis. Utas dapat mengevaluasi kondisi yang menyebabkannya memasuki tunggu, dan jika perlu panggil Wait metode lagi.

Saat utas Waitmemanggil , utas melepaskan kunci pada objek dan memasuki antrean tunggu objek. Utas berikutnya dalam antrean siap objek (jika ada) memperoleh kunci dan memiliki penggunaan objek secara eksklusif. Utas yang dipanggil Wait tetap dalam antrean tunggu hingga utas yang menahan kunci memanggil PulseAll, atau berikutnya dalam antrean dan utas yang menahan kunci memanggil Pulse. Namun, jika millisecondsTimeout berlalu sebelum utas lain memanggil objek Pulse atau PulseAll metode ini, utas asli dipindahkan ke antrean siap untuk mendapatkan kembali kunci.

Catatan

Jika Infinite ditentukan untuk millisecondsTimeout parameter , metode ini memblokir tanpa batas waktu kecuali pemegang panggilan Pulse kunci atau PulseAll. Jika millisecondsTimeout sama dengan 0, utas Wait yang memanggil melepaskan kunci dan kemudian segera memasuki antrean siap untuk mendapatkan kembali kunci.

Pemanggil dijalankan Wait sekali, terlepas dari berapa kali Enter telah dipanggil untuk objek yang ditentukan. Secara konseptual, Wait metode menyimpan berapa kali pemanggil dipanggil Enter pada objek dan memanggil Exit sebanyak yang diperlukan untuk sepenuhnya melepaskan objek yang terkunci. Penelepon kemudian memblokir sambil menunggu untuk memperoleh kembali objek. Ketika penelepon memperoleh kembali kunci, sistem memanggil Enter sebanyak yang diperlukan untuk memulihkan jumlah tersimpan Enter untuk pemanggil. Panggilan melepaskan Wait kunci hanya untuk objek yang ditentukan; jika penelepon adalah pemilik kunci pada objek lain, kunci ini tidak dilepaskan.

Catatan

Objek yang disinkronkan menyimpan beberapa referensi, termasuk referensi ke utas yang saat ini memegang kunci, referensi ke antrean siap, yang berisi utas yang siap untuk mendapatkan kunci, dan referensi ke antrean tunggu, yang berisi utas yang menunggu pemberitahuan perubahan status objek.

Metode Pulse, PulseAll, dan Wait harus dipanggil dari dalam blok kode yang disinkronkan.

Keterangan untuk metode menjelaskan Pulse apa yang terjadi jika Pulse dipanggil ketika tidak ada utas yang menunggu.

Lihat juga

Berlaku untuk

Wait(Object, TimeSpan)

Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval waktu habis yang ditentukan berlalu, utas akan memasuki antrean siap.

public:
 static bool Wait(System::Object ^ obj, TimeSpan timeout);
public static bool Wait (object obj, TimeSpan timeout);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait (object obj, TimeSpan timeout);
static member Wait : obj * TimeSpan -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * TimeSpan -> bool
Public Shared Function Wait (obj As Object, timeout As TimeSpan) As Boolean

Parameter

obj
Object

Objek tempat menunggu.

timeout
TimeSpan

yang TimeSpan menunjukkan jumlah waktu untuk menunggu sebelum utas memasuki antrean siap.

Mengembalikan

true jika kunci diperoleh kembali sebelum waktu yang ditentukan berlalu; false jika kunci diperoleh kembali setelah waktu yang ditentukan berlalu. Metode tidak kembali sampai kunci diterima kembali.

Atribut

Pengecualian

Parameternya obj adalah null.

Utas panggilan tidak memiliki kunci untuk objek yang ditentukan.

Utas Wait yang memanggil kemudian terganggu dari status menunggu. Ini terjadi ketika utas lain memanggil metode utas Interrupt() ini.

Nilai timeout parameter dalam milidetik negatif dan tidak mewakili Infinite (-1 milidetik), atau lebih besar dari Int32.MaxValue.

Keterangan

Metode ini tidak kembali sampai memperoleh kembali kunci eksklusif pada obj parameter .

Utas yang saat ini memiliki kunci pada objek yang ditentukan memanggil metode ini untuk melepaskan objek sehingga utas lain dapat mengaksesnya. Penelepon diblokir saat menunggu untuk memperoleh kembali kunci. Metode ini dipanggil ketika pemanggil perlu menunggu perubahan status yang akan terjadi sebagai akibat dari operasi utas lain.

Waktu habis memastikan bahwa utas saat ini tidak memblokir tanpa batas waktu jika utas lain melepaskan kunci tanpa terlebih dahulu memanggil Pulse metode atau PulseAll . Ini juga memindahkan utas ke antrean siap, melewati utas lain di depannya dalam antrean tunggu, sehingga dapat memperoleh kembali kunci lebih cepat. Utas dapat menguji nilai Wait pengembalian metode untuk menentukan apakah ia memperoleh kembali kunci sebelum waktu habis. Utas dapat mengevaluasi kondisi yang menyebabkannya memasuki tunggu, dan jika perlu panggil Wait metode lagi.

Saat utas Waitmemanggil , utas melepaskan kunci pada objek dan memasuki antrean tunggu objek. Utas berikutnya dalam antrean siap objek (jika ada) memperoleh kunci dan memiliki penggunaan objek secara eksklusif. Utas yang dipanggil Wait tetap dalam antrean tunggu hingga utas yang menahan kunci memanggil PulseAll, atau berikutnya dalam antrean dan utas yang menahan kunci memanggil Pulse. Namun, jika timeout berlalu sebelum utas lain memanggil objek Pulse atau PulseAll metode ini, utas asli dipindahkan ke antrean siap untuk mendapatkan kembali kunci.

Catatan

TimeSpan Jika mewakili -1 milidetik ditentukan untuk timeout parameter , metode ini memblokir tanpa batas waktu kecuali pemegang kunci memanggil Pulse atau PulseAll. Jika timeout 0 milidetik, utas Wait yang memanggil melepaskan kunci dan kemudian segera memasuki antrean siap untuk mendapatkan kembali kunci.

Pemanggil dijalankan Wait sekali, terlepas dari berapa kali Enter telah dipanggil untuk objek yang ditentukan. Secara konseptual, Wait metode menyimpan berapa kali pemanggil dipanggil Enter pada objek dan memanggil Exit sebanyak yang diperlukan untuk sepenuhnya melepaskan objek yang terkunci. Penelepon kemudian memblokir sambil menunggu untuk memperoleh kembali objek. Ketika penelepon memperoleh kembali kunci, sistem memanggil Enter sebanyak yang diperlukan untuk memulihkan jumlah tersimpan Enter untuk pemanggil. Panggilan melepaskan Wait kunci hanya untuk objek yang ditentukan; jika penelepon adalah pemilik kunci pada objek lain, kunci ini tidak dilepaskan.

Catatan

Objek yang disinkronkan menyimpan beberapa referensi, termasuk referensi ke utas yang saat ini memegang kunci, referensi ke antrean siap, yang berisi utas yang siap untuk mendapatkan kunci, dan referensi ke antrean tunggu, yang berisi utas yang menunggu pemberitahuan perubahan status objek.

Metode Pulse, PulseAll, dan Wait harus dipanggil dari dalam blok kode yang disinkronkan.

Keterangan untuk metode menjelaskan Pulse apa yang terjadi jika Pulse dipanggil ketika tidak ada utas yang menunggu.

Lihat juga

Berlaku untuk

Wait(Object, TimeSpan, Boolean)

Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval waktu habis yang ditentukan berlalu, utas akan memasuki antrean siap. Secara opsional keluar dari domain sinkronisasi untuk konteks yang disinkronkan sebelum menunggu dan memperoleh kembali domain setelahnya.

public:
 static bool Wait(System::Object ^ obj, TimeSpan timeout, bool exitContext);
public static bool Wait (object obj, TimeSpan timeout, bool exitContext);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait (object obj, TimeSpan timeout, bool exitContext);
static member Wait : obj * TimeSpan * bool -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * TimeSpan * bool -> bool
Public Shared Function Wait (obj As Object, timeout As TimeSpan, exitContext As Boolean) As Boolean

Parameter

obj
Object

Objek tempat menunggu.

timeout
TimeSpan

yang TimeSpan menunjukkan jumlah waktu untuk menunggu sebelum utas memasuki antrean siap.

exitContext
Boolean

true untuk keluar dan memperoleh kembali domain sinkronisasi untuk konteks (jika dalam konteks yang disinkronkan) sebelum menunggu; jika tidak, false.

Mengembalikan

true jika kunci diperoleh kembali sebelum waktu yang ditentukan berlalu; false jika kunci diperoleh kembali setelah waktu yang ditentukan berlalu. Metode tidak kembali sampai kunci diterima kembali.

Atribut

Pengecualian

Parameternya obj adalah null.

Wait tidak dipanggil dari dalam blok kode yang disinkronkan.

Utas yang memanggil Tunggu kemudian terganggu dari status tunggu. Ini terjadi ketika utas lain memanggil metode utas Interrupt() ini.

Parameter timeout negatif dan tidak mewakili Infinite (-1 milidetik), atau lebih besar dari Int32.MaxValue.

Keterangan

Untuk informasi selengkapnya tentang API ini, lihat Keterangan API Tambahan untuk Monitor.Wait.

Lihat juga

Berlaku untuk