Bahasa

SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) Metode

Definisi

Mendapatkan atau membuat instans, memungkinkan Semaphore instans SemaphoreSecurity ditentukan secara opsional untuk mengaturnya selama pembuatan peristiwa.

public:
 static System::Threading::Semaphore ^ Create(int initialCount, int maximumCount, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::SemaphoreSecurity ^ semaphoreSecurity);
public static System.Threading.Semaphore Create(int initialCount, int maximumCount, string? name, out bool createdNew, System.Security.AccessControl.SemaphoreSecurity? semaphoreSecurity);
static member Create : int * int * string * bool * System.Security.AccessControl.SemaphoreSecurity -> System.Threading.Semaphore
Public Shared Function Create (initialCount As Integer, maximumCount As Integer, name As String, ByRef createdNew As Boolean, semaphoreSecurity As SemaphoreSecurity) As Semaphore

Parameter

initialCount
Int32

Jumlah awal permintaan untuk semaphore yang dapat dipenuhi secara bersamaan.

maximumCount
Int32

Jumlah maksimum permintaan untuk semaphore yang dapat dipenuhi secara bersamaan.

name
String

Nama, jika objek sinkronisasi akan dibagikan dengan proses lain; jika tidak, null atau string kosong. Namanya sensitif terhadap penggunaan huruf besar/kecil. Karakter garis miring terbalik (\) dicadangkan dan hanya dapat digunakan untuk menentukan namespace. Untuk informasi selengkapnya tentang namespace layanan, lihat bagian keterangan. Mungkin ada pembatasan lebih lanjut pada nama tergantung pada sistem operasi. Misalnya, pada sistem operasi berbasis Unix, nama setelah mengecualikan namespace harus berupa nama file yang valid.

createdNew
Boolean

Ketika metode ini kembali, argumen ini selalu diatur ke true jika semaphore lokal dibuat; yaitu, kapan name adalah null atau Empty. Jika name memiliki nilai yang valid dan tidak kosong, argumen ini diatur ke true ketika semaphore sistem dibuat, atau diatur ke false jika semaphore sistem yang ada ditemukan dengan nama tersebut. Parameter ini diteruskan tanpa diinisialisasi.

semaphoreSecurity
SemaphoreSecurity

Keamanan kontrol akses semaphore opsional untuk diterapkan.

Mengembalikan

Objek yang mewakili semaphore sistem, jika bernama, atau semaphore lokal, jika tanpa nama.

Pengecualian

initialCount adalah angka negatif. -atau-

maximumCount bukan angka positif.

initialCount lebih besar dari maximumCount.

-atau-

.NET Framework saja: name lebih panjang dari MAX_PATH (260 karakter).

name tidak valid. Ini bisa karena berbagai alasan, termasuk beberapa batasan yang mungkin ditempatkan oleh sistem operasi, seperti awalan yang tidak diketahui atau karakter yang tidak valid. Perhatikan bahwa nama dan awalan umum "Global\" dan "Local\" peka huruf besar/kecil.

-atau-

Ada beberapa kesalahan lainnya. Properti HResult dapat memberikan informasi lebih lanjut.

Windows saja: name menentukan namespace yang tidak diketahui. Lihat Nama Objek untuk informasi selengkapnya.

Terlalu name panjang. Pembatasan panjang dapat bergantung pada sistem operasi atau konfigurasi.

Objek sinkronisasi dengan yang disediakan name tidak dapat dibuat. Objek sinkronisasi dari jenis yang berbeda mungkin memiliki nama yang sama.

Keterangan

name mungkin diawali dengan Global\ atau Local\ untuk menentukan namespace. Global Ketika namespace ditentukan, objek sinkronisasi dapat dibagikan dengan proses apa pun pada sistem. Local Ketika namespace ditentukan, yang juga merupakan default ketika tidak ada namespace layanan yang ditentukan, objek sinkronisasi dapat dibagikan dengan proses dalam sesi yang sama. Pada Windows, sesi adalah sesi masuk, dan layanan biasanya berjalan dalam sesi non-interaktif yang berbeda. Pada sistem operasi seperti Unix, setiap shell memiliki sesinya sendiri. Objek sinkronisasi sesi-lokal mungkin sesuai untuk menyinkronkan antara proses dengan hubungan induk/anak di mana semuanya berjalan dalam sesi yang sama. Untuk informasi selengkapnya tentang nama objek sinkronisasi di Windows, lihat nama Object.

name Jika disediakan dan objek sinkronisasi dari jenis yang diminta sudah ada di namespace, objek sinkronisasi yang ada akan dibuka. Jika objek sinkronisasi dari jenis yang berbeda sudah ada di namespace layanan, akan WaitHandleCannotBeOpenedException dilemparkan. Jika tidak, objek sinkronisasi baru dibuat.

Caution

Secara default, semaphore bernama tidak dibatasi untuk pengguna yang membuatnya. Pengguna lain mungkin dapat membuka dan menggunakan semaphore, termasuk mengganggu semaphore dengan memperoleh semaphore beberapa kali dan tidak merilisnya. Untuk membatasi akses ke pengguna tertentu, Anda dapat meneruskan SemaphoreSecurity saat membuat semaphore bernama. Hindari menggunakan semaphores bernama tanpa pembatasan akses pada sistem yang mungkin memiliki pengguna yang tidak tepercaya yang menjalankan kode.

Berlaku untuk