Monitor.Wait Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 Wait
memanggil , 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 Wait
memanggil , 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 Wait
memanggil , 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.