EventWaitHandle

EventWaitHandleفئة تسمح عمليات جزئية للاتصال بكل غير ذلك بواسطة إرسال إشارة وفي انتظار الإشارات. انتظار حدث مقابض (يشار إلى بساطة كأحداث) هي مقابض الانتظار التي يمكن أن تكون إليه صوت في ترتيب إلى لإصدار مؤشرات ترابط انتظار أو أكثر. بعدها هو إليه بصوت، حدث الانتظار مؤشر هو يعيد تعيين المعاملة أما يدوياً أو تلقائياً. EventWaitHandleيمكن أن تمثل الفئة أما حدث محلي انتظار مؤشر (الحدث المحلي) أو حدث نظام مسمى بانتظار مؤشر (تسمية الحدث أو حدث النظام مرئي إلى كافة معالجات).

ملاحظةملاحظة

مقابض انتظار حدث غير أحداث في ذات معنى تعني عادة بتلك الكلمة في إطار عمل.NET.هناك لا المفوضون أو حدث متعلق بمعالجات.كلمة "الحدث" هو يستخدم لوصف يكون عادة تم الإشارة إلى أنه أحداث النظام التشغيل، ونظرا لأن عملية الإشارة إلى مقبض انتظار حدث ما حدث يشير إلى انتظار عمليات جزئية.

استخدم مقابض انتظار حدث المحلي والمسمى كلا الكائنات المزامنة النظام، والتي تكون محمية بواسطة SafeWaitHandlewrappers إلى التأكد من أن يتم تحرير موارد. يمكنك استخدام IDisposable.Disposeأسلوب إلى تحرير موارد مباشرة عند انتهاء استخدام الكائن،

انتظار حدث بمقابض التي يعيد تعيين المعاملة تلقائياً

إنشاء حدث يعيد تعيين المعاملة تلقائي بواسطة تحديد EventResetMode.AutoResetعند إنشاء EventWaitHandleكائن. كـ يتضمن اسمه، إعادة تعيين هذا حدث المزامنة تلقائياً عند إليه صوت، بعد releكـing مؤشر ترابط انتظار واحدة. إشارة حدث بواسطة استدعاء له Setأسلوب.

يعيد تعيين المعاملة تلقائي عادة تستخدم الأحداث توفير حق وصول خاص إلى مورد الخاص بمؤشر ترابط مفرد في مرة الواحدة. مؤشر ترابط طلب مورد بواسطة استدعاء WaitOneأسلوب. في حالة عدم وجود مؤشر ترابط آخر هو الضغط المقبض الانتظار، يقوم الأسلوب بإرجاع trueوقام مؤشر ترابط استدعاء عنصر التحكم للمورد.

ملاحظة هامةهام

كـ مع الجميع آليات المزامنة، يجب التأكد من أن الجميع مسارات تعليمات برمجية الانتظار تشغيل مؤشر الانتظار المناسبة قبل الوصول إلى مورد محمي.مؤشر الترابط المزامنة هو التعاونية.

إذا تلقائي بيعيد تعيين المعاملة الحدث هو إليه بصوت عند تنتظر مؤشرات ترابط لا، يظل signaled حتى يحاول مؤشر ترابط الانتظار عليه. تصدر مؤشر ترابط حدث وإعادة تعيين فورا، حظر اللاحقة عمليات جزئية.

انتظار حدث بمقابض التي يعيد تعيين المعاملة يدوياً

إنشاء حدث يعيد تعيين المعاملة يدوياً بواسطة تحديد EventResetMode.ManualResetعند إنشاء EventWaitHandleالكائن. كما يتضمن اسمه، هذا حدث بالتزامن يجب أن تتم يعيد تعيين المعاملة يدوياً بعد قد تم إليه صوت. حتى هو إعادة تعيين، بواسطة استدعاء له Resetالأسلوب، عمليات جزئية التي بالانتظار تشغيل معالج حدث متابعة مباشرة دون حظر.

يدوي يعيد تعيين المعاملة دور الأحداث مثل البوابة corral. عند حدث هو لا إليه صوت، عمليات جزئية التي انتظر فيها حظر، مثل أحصنة في corral. عند حدث يشار إليه بصوت، بواسطة استدعاء له Setالأسلوب، الجميع مؤشرات ترابط انتظار حرية متابعة. تبقى حدث signaled حتى به Resetأسلوب هو تسمى. يقوم هذا حدث يعيد تعيين المعاملة يدوياً بطريقة مثالية للاحتفاظ بإعداد عمليات جزئية التي تحتاج إلى الانتظار حتى انتهاء مؤشر ترابط واحد مهمة.

مثل أحصنة ترك corral، يستغرق وقتاً لمؤشرات الترابط التي تم إصدارها حتى تتم جدولته النظام تشغيل واستئناف التنفيذ. إذا Resetأسلوب هو مؤشرات تسمى قبل تم استئناف الجميع عمليات جزئية في التنفيذ، الباقية ترابط مرة حظر. استئناف عمليات جزئية التي و كتلة عمليات جزئية التي تعتمد تشغيل عوامل rوom مثل تحميل تشغيل النظام، وهو عدد عمليات جزئية التي تنتظر المجدول، و هكذا. Th هو هو ليست مشكلة في حالة إنهاء مؤشر ترابط الذي إشارات حدث بعد إرسال إشارة، التي هو نمط الاستخدام الأكثر شيوعاً. إذا كنت ترغب في مؤشر ترابط الذي إليه صوت حدث إلى بدء مهمة جديدة بعد الجميع عمليات جزئية في انتظار أن استئناف، يجب منعه حتى تم استئناف الجميع عمليات جزئية الانتظار. Otherwهوe، وجود حالة تعارض سلوك التعليمة البرمجية الخاصة بك هو لا يمكن التنبؤ به.

الميزات المشتركة إلى تلقائي و يدوي الأحداث

بشكل عام، حظر مؤشرات ترابط أو أكثر تشغيل EventWaitHandleحتى يتم استدعاء تشغيل مؤشر ترابط غير المحظورة Setأسلوب، التي تصدر واحد عمليات جزئية جارى الإنتظار (في حالة من أحداث يعيد تعيين المعاملة تلقائي) أو كلها (في حالة من يدوي يعيد تعيين المعاملة الأحداث). يمكن لمؤشر ترابط إشارة EventWaitHandleوثم حظر عليه، كـ عملية بسيط، بواسطة استدعاء الثابت WaitHandle.SignalAndWaitالأسلوب.

EventWaitHandleيمكن استخدام الكائنات ثابتةWaitHandle.WaitAllوWaitHandle.WaitAnyوظائف. Beca استخدم EventWaitHandleو Mutexاشتقاق الفئات كلا من WaitHandle، يمكنك استخدم كل من الفئات باستخدام هذه الأساليب.

يسمى أحداث

النظام التشغيل تسمح مقابض انتظار حدث إلى أسماؤها. حدثاً مسماة هو واسع الالنظام. أن هو، المسماة الحدث مرة واحدة هو تاريخ الإنشاء، هو vهوible لالجميع عمليات جزئية في الجميع معالجات. وهكذا، يمكن استخدام الأحداث المسماة إلى مزامنة أنشطة معالجات بالإضافة إلى عمليات جزئية.

يمكنك إنشاء EventWaitHandleكائن الذي يمثل حدث النظام مسمى باستخدام واحد المنشئات التي تعين على اسم الحدث.

ملاحظةملاحظة

نظراً للأحداث المسماة النظام واسع، فإنه هو يمكن العديد من EventWaitHandleالكائنات التي تمثل نفس حدث المسمى.في كل مرة تقوم باستدعاء على الدالة الإنشائية أو OpenExistingجديد، أسلوب EventWaitHandleالكائن هو تاريخ الإنشاء.تحديد نفس اسم إنشاء العديد من الكائنات التي تمثل نفس حدث اسم d بشكل متكرر.

تنبيه هو advهوed في استخدام المسمى الأحداث. لأن النظام واسعة، عملية أخرى تستخدم نفس الاسم بمنع عمليات جزئية شكل غير متوقع. تنفيذ تعليمات برمجية ضارة تشغيل نفس الكمبيوتر قد استخدم ذلك كالاساس لهجوم رفض الخدمة.

استخدام الوصول عنصر تحكم الالأمان لحماية EventWaitHandleالكائن الذي يمثل حدثاً مسماة، يفضل باستخدام الدالة الإنشائية الذي يحدد EventWaitHandleSecurityالكائن. يمكنك أيضا يطبق الأمان التحكم بالوصول باستخدام SetAccessControlالأسلوب، ولكن th هو تترك إطارا لمشكلة عدم الحصانة بين وقت انتظار حدث مقبض هو التي تم إنشاؤها والوقت هو محمية. حماية الأحداث باستخدام التحكم بالوصول إلى الأمان تساعد على منع الهجمات الضارة، ولكنه لا يحل المشكلة من عدد التضاربات اسم غير مقصود.

ملاحظةملاحظة

Unlike the EventWaitHandle فئة, the derived فئات AutoResetEvent و ManualResetEvent can represent فقط محلي wait handles. They cannot represent named النظام أحداث.

راجع أيضًا:

المرجع

EventWaitHandle

WaitHandle

AutoResetEvent

ManualResetEvent

موارد أخرى

EventWaitHandle AutoResetEvent، CountdownEvent و ManualResetEvent