HOW TO: استخدام الحرة المزدوجة أحداث من Visual Studio .NET

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

318185
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الموجز
يستخدم هذا دليل خطوة بخطوة لإنشاء تجميع .NET يحتوي على ناشر, مشترك و واجهة لمعالجة والمتصلة بدقة الأحداث في "خدمات" COM +.

back to the top

متطلبات

توضح القائمة التالية الأجهزة الموصى بها برامج البنية الأساسية للشبكة و حزم الخدمات التي تحتاجها:
  • Microsoft Windows 2000 Professional أو نظام التشغيل Microsoft Windows 2000 Server ، Microsoft Windows XP Professional أو Microsoft Windows XP Server.
  • إطار عمل Microsoft .NET.
  • Microsoft Visual Studio .NET.
  • Microsoft Visual C# .NET.
  • Microsoft COM +.
تفترض هذه المقالة كنت معتاداً على المواضيع التالية:
  • COM وخدمات المؤسسة.
  • لتوسيع بيانات التعريف باستخدام السمات.
back to the top

إنشاء تجميع .NET تلك الأحداث Coupled الحرة الاستخدامات

ينشئ الإجراء التالي تجميع .NET تحتوي على واجهة أن مقابض والمتصلة بدقة الأحداث في "خدمات" COM + و مشترك أو ناشر:
  1. انقر فوق ابدأ وأشر إلى البرامج، وأشر إلى Microsoft Visual Studio .NET ، ثم انقر فوق Microsoft Visual Studio .NET.
  2. انقر فوق مشروع جديد.
  3. في أنواع Project ، انقر فوق Visual C# المشاريع.
  4. في قوالب ، حدد تطبيق Windows.
  5. في المربع الاسم، اكتب HowToLCE ومن ثم انقر فوق موافق.

    لديك الآن حل الذي يحتوي على shell التطبيق نماذج Windows.
  6. إنشاء "مكتبة الفئات" يحتوي على "تعليمات برمجية" الناشر "و" المشترك "و" واجهة المشتركة بواسطة كليهما. من القائمة ملف، أشر إلى إضافة Project ثم انقر فوق مشروع جديد.
  7. في أنواع Project ، انقر فوق Visual C# المشاريع.
  8. في قوالب ، انقر فوق مكتبة الفئات.
  9. في المربع الاسم، اكتب ClassLibLCE ومن ثم انقر فوق موافق.
  10. في "مستكشف الحلول" ضمن ClassLibLCE انقر بزر الماوس الأيمن فوق مراجع ومن ثم انقر فوق إضافة مرجع.
  11. على علامة التبويب .NET ضمن مراجع ، انقر فوق System.EnterpriseServices ثم انقر فوق تحديد. انقر فوق موافق.
  12. إضافة توجيهات استخدام التالية في أعلى الملف Class1.cs للوصول إلى الفئات في مساحات أسماء هذه:
    using System.EnterpriseServices;using System.Diagnostics;						
    عند ترجمة مكون مكتبة الفئات "، يصبح تجميع .NET. بعد تسجيل فإنه يمكنك تشغيله ضمن "خدمات" COM + بسبب "الناشر" و "المشترك ينحدر من EnterpriseServices.ServicedComponents().
  13. قم بتعريف الواجهة تتم مشاركة هذه فئتين. في ملف Class1.cs بإضافة التعليمة البرمجية التالية بعد الفئة العامة Class1:
    public interface IEvSink{	void OnEvent1();	void OnEvent2();}					
  14. استبدال الفئة العامة Class1 التعليمة البرمجية التالية لفئة Publisher:
    [EventClass]public class MyPublisher : ServicedComponent, IEvSink{	public MyPublisher()	{	// 	// TODO: Add constructor logic here.	// 	}	public void OnEvent1()	{}		public void OnEvent2()	{}	}						
    لاحظ تزيين الفئة السابقة مع السمة [EventClass]. هذه السمة ضروري. عليه بإعلام "خدمات" COM + أن هذه الفئة النماذج الاتصال بين الناشر subscriber(s) الخاص به. عند العمل عبر كافة التعليمات البرمجية في هذه المقالة تلاحظ وجود لم استدعاءات مباشرة إلى فئة MyPublisher. بمعنى آخر، تتم معالجة التفاعل بين Publisher المشترك قبل "خدمات" COM + بواسطة فئة ذات السمة [EventClass]. لذلك، ليس لدى الناشر معرفة أي المباشر subscriber(s). يمكن أن تتلقى أي المشترك المسجلة مع "خدمات" COM + لهذا التطبيق الذي يستخدم واجهة IEvSink الأحداث من الناشر.
  15. البت النهائية من التعليمات البرمجية في "مكتبة الفئات" المشترك. يعالج هذه الفئة أحداث تشغيل بواسطة الناشر. في هذه الحالة، تأكد إدخال بسيطة في سجل الأحداث لإظهار إعلامك المشترك عند استدعاء إلى واجهة المنشورة. قم بإضافة التعليمات البرمجية التالية بعد فئة MyPublisher:
    public class MySubscriber : ServicedComponent, IEvSink{	EventLog ev = new EventLog("Application");	public void OnEvent1()	{		ev.Source = "ClassLibLCE";		ev.WriteEntry("OnEvent1 Fired");	}	public void OnEvent2()	{		ev.Source = "ClassLibLCE";		ev.WriteEntry("OnEvent2 Fired");	}}					
  16. لاستخدام التجميع تصنيف من "مكتبة الفئات" لإعطائه اسم واضح. لإنشاء زوج المفاتيح هذا التشفير استخدم الأداة SN (Sn.exe). وهو موجود في مجلد \bin حيث تم تثبيت .NET Framework البرامج مطوري "وثائق مجموعة (SDK). أداة SN جداً سهل الاستخدام. جملة سطر الأوامر يستخدم بناء الجملة التالي:
    كيلو sn "C:\%DirectoryToPlaceKey%\%KeyName%.snk"
  17. تشغيل هذا الأمر من موجه الأوامر Visual Studio .NET. انقر فوق ابدأ ، وأشر إلى البرامج ، وأشر إلى Microsoft Visual Studio .NET ، أشر إلى أدوات .NET Visual Studio ثم انقر فوق موجه الأوامر .NET Visual Studio. في موجه الأوامر، اكتب ما يلي:
    كيلو sn "C:\ClassLibLCE\key.snk"
    إذا لم يكن المشروع "مكتبة الفئات" في هذا المسار تغيير المسار إلى جذر مجلد المشروع للمشروع "مكتبة الفئات".

    يتم إنشاء مفتاح. التحقق من ذلك, في "مستكشف الحلول" ، حدد ClassLibLCE ثم انقر فوق الزر "إظهار كافة الملفات" على شريط أدوات مستكشف الحلول.

    لاحظ العنصر key.snk ضمن ClassLibLCE.
  18. إنشاء هذا الاقتران لأن هذا المفتاح غير المقترنة مع التجميع "مكتبة الفئات" بعد ،. في "مستكشف الحلول" ضمن ClassLibLCE انقر نقراً مزدوجاً فوق AssemblyInfo.cs. في AssemblyKeyFile اكتب ما يلي بين علامتي اقتباس الموجودة:
    "..\\..\\key.snk"
  19. إكمال التعليمة البرمجية الخاصة الحل بالكامل عن طريق شبكة أسلاك لأعلى نموذج Windows إلى "مكتبة الفئات". تذكر أن هذا النموذج فقط لأغراض العرض التوضيحي. يعمل بشكل أساسي كـ "نظام اختبار". إضافة مراجع المناسبة.
    1. في "مستكشف الحلول" ضمن HowToLCE انقر بزر الماوس الأيمن فوق مراجع ثم انقر فوق إضافة مرجع القائمة المختصرة.
    2. في علامة التبويب .NET ، انقر فوق System.EnterpriseServices.
    3. في علامة التبويب "المشاريع" ، انقر فوق ClassLibLCE.
    4. انقر فوق تحديد.
    5. انقر فوق موافق.

      لاحظ العناصر System.EnterpriseServices و ClassLibLCE المسرودة تحت المراجع.
  20. في محرر التعليمات البرمجية، انقر فوق علامة التبويب Form1.cs [تصميم] النقر المزدوج أي مكان على النموذج إنشاء معالج حدث Form1_Load. إضافة التعليمات البرمجية التالية معالج الحدث هذا.

    لاحظ أن هناك مقطعي. الأولى فقط من أجل تسجيل "مكتبة الفئات". يتم استخدامها مرة واحدة فقط. المشغّلات الثاني الأحداث الناشر.
    // Section #1// Register Class Library as a COM+ application.    ClassLibLCE.MySubscriber l = new    ClassLibLCE.MySubscriber ();// Section #2//  Call Events on Publisher//  ClassLibLCE.MyPublisher l = new ClassLibLCE.MyPublisher();//  l.OnEvent1();//  l.OnEvent2();					
  21. اضغط F5 بتشغيل التطبيق ثم بالتسجيل "مكتبة الفئات".

    يجعل هذا المشترك من الوصول إلى ولكن غير مسجل بعد مع "خدمات" COM +. بعد تحميل النموذج إغلاقه. هذا هو أبسط طريقة تسجيل تجميع .NET بحيث أنه يمكن الاستفادة من "خدمات" COM +. على الرغم من ذلك، تسجيل بهذه الطريقة يجب أن يتم تسجيل الكمبيوتر المحلي باستخدام حقوق إدارية. إذا لم يكن لدى المستخدمين الذين يستخدمون التطبيق الخاص بك حقوق إدارية على الكمبيوتر المحلية الخاصة بهم, يمكنك تسجيل تجميع باستخدام الأداة المساعدة Regasm.exe الخاصة بها عند نشر التطبيق.
  22. تشغيل الأداة الإضافية "خدمات المكونات".

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

    ملاحظة: إذا أردت، يمكنك كتابة التعليمات البرمجية لأتمتة الخطوات التالية باستخدام "COM + 1.0 مسؤول مكتبة". للحصول على معلومات إضافية، عرض محتويات مكتبة في "مستعرض الكائنات".
  23. قم بتوسيع "خدمات المكونات". قم بتوسيع Computers. قم بتوسيع جهاز الكمبيوتر. قم بتوسيع تطبيقات COM +. قم بتوسيع ClassLibLCE. قم بتوسيع المكونات. قم بتوسيع ClassLibLCE.MySubscriber.
  24. انقر بزر الماوس الأيمن فوق المجلد اشتراكات ، أشر إلى جديد ثم انقر فوق اشتراك.
  25. في COM + "الاشتراك المعالج جديد،" انقر فوق التالي. حدد الخيار الاشتراك واجهة IEvSink. انقر فوق التالي.
  26. في الصفحة "تحديد فئة الحدث" ، انقر فوق ClassLibLCE.MyPublisher. (هذا هو الفئة التي تم تزيين ذات السمة [EventClass].) انقر فوق التالي.
  27. أدخل الاسم الذي تريد استخدامه ثم انقر لتحديد خانة الاختيار تمكين هذا الاشتراك مباشرة. انقر فوق التالي. انقر فوق إنهاء.
back to the top

رمز لملف Class1.cs

using System;using System.EnterpriseServices;using System.Diagnostics;namespace ClassLibLCE{       /// <summary>       /// Summary description for Class1.       /// </summary>       [EventClass]       public class MyPublisher : ServicedComponent, IEvSink       {	     public MyPublisher()	     {	     // 	     // TODO: Add constructor logic here.	     // 	     }	     public void OnEvent1()	     {}		     public void OnEvent2()	     {}	     }	     public class MySubscriber : ServicedComponent, IEvSink	     {		EventLog ev = new EventLog("Application");		public void OnEvent1()		{			ev.Source = "ClassLibLCE";			ev.WriteEntry("OnEvent1 Fired");		}		public void OnEvent2()		{			ev.Source = "ClassLibLCE";			ev.WriteEntry("OnEvent2 Fired");		}	}	public interface IEvSink	{		void OnEvent1();		void OnEvent2();	}}				
back to the top

رمز لملف AssemblyInfo.cs

using System.Reflection;using System.Runtime.CompilerServices;// // General information about an assembly is controlled through the // following set of attributes. Change these attribute values to modify// the information associated with an assembly.// [assembly: AssemblyTitle("")][assembly: AssemblyDescription("")][assembly: AssemblyConfiguration("")][assembly: AssemblyCompany("")][assembly: AssemblyProduct("")][assembly: AssemblyCopyright("")][assembly: AssemblyTrademark("")][assembly: AssemblyCulture("")]		// // Version information for an assembly includes the following four // values://      Major Version//      Minor Version //      Build Number//      Revision// // You can specify all the values or you can use the default Revision and // Build Numbers by using the '*', similar to this:[assembly: AssemblyVersion("1.0.*")]// // To sign your assembly, specify a key to use. For more // information about assembly signing, see the Microsoft .NET Framework // documentation.// // Use the following attributes to control which key is used for signing. // // NOTES: //   (*) If no key is specified, the assembly is not signed.//   (*) KeyName refers to a key that is installed in the Crypto Service//       Provider (CSP) on your computer. KeyFile refers to a file that //       contains a key.//   (*) If the KeyFile and the KeyName values are both specified, the //       following processing occurs://       (1) If the KeyName is found in the CSP, that key is used.//       (2) If the KeyName does not exist and the KeyFile does exist, the //           key in the KeyFile is installed into the CSP and used.//   (*) To create a KeyFile, you can use the Sn.exe (Strong Name) //       tool. When specifying the KeyFile, the location of the KeyFile //       must be relative to the project output folder which is//       %Project Directory%\obj\<configuration>. For example, if your //       KeyFile is located in the project folder, specify the //       AssemblyKeyFile attribute as //          [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]//   (*) Delay Signing is an advanced option. For more information, see the //       Microsoft .NET Framework documentation.// [assembly: AssemblyDelaySign(false)][assembly: AssemblyKeyFile("..\\..\\key.snk")][assembly: AssemblyKeyName("")]				
back to the top

رمز لملف Form1.cs

using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;namespace HowToLCE{	/// <summary>	/// Summary description for Form1.	/// </summary>	public class Form1 : System.Windows.Forms.Form	{		/// <summary>		/// Required designer variable.		/// </summary>		private System.ComponentModel.Container components = null;		public Form1()		{			// 			// Required for Windows Form Designer support.			// 			InitializeComponent();			// 			// TODO: Add any constructor code after the			// InitializeComponent call.			// 		}		/// <summary>		/// Clean up any resources being used.		/// </summary>		protected override void Dispose( bool disposing )		{			if( disposing )			{				if (components != null) 				{					components.Dispose();				}			}			base.Dispose( disposing );		}		#region Windows Form Designer generated code		/// <summary>		/// Required method for Designer support; do not modify		/// the contents of this method with the Code Editor.		/// </summary>		private void InitializeComponent()		{			// 			// Form1			// 			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);			this.ClientSize = new System.Drawing.Size(292, 266);			this.Name = "Form1";			this.Text = "Form1";			this.Load += new System.EventHandler(this.Form1_Load);		}		#endregion		/// <summary>		/// The main entry point for the application.		/// </summary>		[STAThread]		static void Main() 		{			Application.Run(new Form1());		}		private void Form1_Load(object sender, System.EventArgs e)		{			//Section #1			// Register Class Library as a COM+ application.//			ClassLibLCE.MySubscriber l = new ClassLibLCE.MySubscriber();			//Section #2			// Call Events on Publisher.				ClassLibLCE.MySubscriber l = new ClassLibLCE.MySubscriber();						l.OnEvent1();						l.OnEvent2();		}	}}				
back to the top

تحقق من أنه Works

  1. في إطار محرر التعليمات البرمجية التعليق التعليمات البرمجية في مقطع # 1 الملف Form1.cs ثم uncomment التعليمات البرمجية في المقطع # 2.
  2. قم بتشغيل الملف التنفيذي للمشروع HowToLCE فقط. للقيام بذلك، انقر فوق إدارة تكوين القائمة بنية. قم بإلغاء تحديد خانة الاختيار إنشاءClassLibLCE. انقر فوق إغلاق.
  3. اضغط F5 لتشغيل التطبيق في وضع التصحيح.
  4. عند تحميل النموذج إغلاقه.
  5. اضغط CTRL + ALT + S لتشغيل "مستكشف الملقم". توسيع الملقمات. قم بتوسيع computer name. قم بتوسيع سجلات الأحداث. قم بتوسيع تطبيق. قم بتوسيع ClassLibLCE.

    لاحظ إدخالين سجل الأحداث.
back to the top

استكشاف الأخطاء وإصلاحها

  1. تحديث سجل الأحداث لمشاهدة الإدخالات في "مستكشف الملقم".
  2. إذا قمت بإجراء تغييرات على "مكتبة الفئات" بعد تشغيل خلال الإجراءات الأشياء ثم قم بإعادة إنشاء "مكتبة الفئات" فمن الأرجح تأمين التجميع بواسطة خدمات المكون. للتغلب على هذا استخدام أحد الأساليب التالية:
    • انقر بزر الماوس الأيمن فوق المكون في خدمات المكونات "، ثم انقر فوق إيقاف.

      - أو -
    • حذف المكون إذا كنت تريد إجراء تغييرات هامة على التعليمات البرمجية الخاصة بك.
back to the top


مراجع
للحصول على معلومات إضافية حول أحداث coupled والمتصلة قم بزيارة موقع Microsoft التالي على الويب: للحصول على معلومات إضافية حول كيفية تطبيق + COM ونشرها تكوينها فئات، قم بزيارة موقع Microsoft التالي على الويب: back to the top

تحذير: تمت ترجمة هذا المقال تلقائياً

خصائص

رقم الموضوع: 318185 - آخر مراجعة: 02/28/2014 04:32:22 - المراجعة: 3.3

  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft .NET Framework Class Libraries 1.0
  • kbnosurvey kbarchive kbmt kbhowtomaster KB318185 KbMtar
تعليقات