Postupy: Použití volně LCE události z aplikace Visual Studio .NET

Překlady článku Překlady článku
ID článku: 318185 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Použít Tento podrobný návod k vytvoření sestavení .NET obsahující vydavatele, Odběratel a rozhraní pro zpracování volně provázaných události služby COM +.

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a požadované aktualizace Service Pack:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional nebo Microsoft Windows XP Server.
  • Rozhraní Microsoft .NET framework.
  • Microsoft Visual Studio .NET.
  • Microsoft Visual C# .NET.
  • Microsoft COM +.
Tento článek předpokládá znalost následujících témat:
  • COM a organizace služby.
  • Rozšíření meta data pomocí atributy.

Vytvořit sestavení .NET, že používá volně provázaných události

Následující postup vytvoří sestavení .NET obsahující vydavatele, Odběratel a rozhraní úchyty spárován volně události služby COM +:
  1. Klepněte na tlačítko Start, přejděte na příkaz programy, přejděte na Microsoft Visual Studio.NET a potom klepněte na příkaz Microsoft Visual Studio.NET.
  2. Možnost Nový projekt.
  3. V Projektu typy klepněte na Projekty Visual C#.
  4. V šablony vyberte Aplikace Windows.
  5. V poli název zadejte HowToLCE a potom klepněte na tlačítko OK.

    Nyní máte řešení obsahující prostředí aplikace model Windows Forms.
  6. Vytvoření knihovny tříd, které obsahuje kód pro vydavatele, Odběratel a rozhraní je sdílen obě. V nabídce soubor přejděte do Projektu přidat a potom klepněte na tlačítko Nový projekt.
  7. V Projektu typy klepněte na Projekty Visual C#.
  8. V šablony klepněte na položku Knihovny tříd.
  9. V poli název zadejte ClassLibLCE a potom klepněte na tlačítko OK.
  10. V aplikaci Solution Explorer pod ClassLibLCEodkazy klepněte pravým tlačítkem myši a potom klepněte na tlačítko Přidat odkaz.
  11. Na kartě .NET pod odkazyslužby System.EnterpriseServices klepněte a potom klepněte na tlačítko Vybrat. Klepněte na tlačítko OK.
  12. Přidat následující direktivy použití třídy přístup v těchto oborů názvů v horní části souboru Class1.cs:
    using System.EnterpriseServices;
    using System.Diagnostics;
    						
    při kompilaci součást Knihovny tříd stane sestavení .NET. Po registraci, můžete jej spustit v části COM + Services, protože aplikace publisher a subscriber odvodit z EnterpriseServices.ServicedComponents().
  13. Tyto dvě třídy budou sdílet rozhraní deklarovat. Přidejte následující kód po veřejné třídy Class1 v souboru Class1.cs:
    public interface IEvSink
    {
    	void OnEvent1();
    	void OnEvent2();
    }
    					
  14. Nahraďte následující kód třídy Publisher veřejné třídy Class1:
    [EventClass]
    public class MyPublisher : ServicedComponent, IEvSink
    {
    	public MyPublisher()
    	{
    	// 
    	// TODO: Add constructor logic here.
    	// 
    	}
    	public void OnEvent1()
    	{}	
    	public void OnEvent2()
    	{}
    	}
    						
    Notice předchozí třídy je upraven pomocí atributu [EventClass]. Tento atribut je důležité. Jej informuje služby COM + Tato třída formulářů připojení mezi vydavatele a jeho subscriber(s). Pracovali prostřednictvím kódu v tomto článku si všimněte, že neexistují žádné přímé volání do třídy MyPublisher. Jinými slovy interakce mezi vydavatel a odběratel je zpracována službou COM + pomocí třídy s atributem [EventClass]. Proto vydavatele nemá žádné přímé znalostí subscriber(s). Jakékoli subscriber registrován službou COM + pro tuto aplikaci, která používá rozhraní IEvSink mohou přijímat události od vydavatele.
  15. Konečné bit kód požadované knihovny tříd je pro odběratele. Tato třída zpracovává události aktivována vydavatele. V tomto případě vytvořit jednoduchý položku v protokolu událostí zobrazit informován odběratele při volání publikované rozhraní. Přidejte následující kód po třídy 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. Použití sestavení kompilován z knihovny tříd jí silného názvu. Generovat tento páru kryptografických klíčů, použijte nástroj S.Č (sn.exe). Je umístěn ve složce \bin, kde je nainstalován dokumentaci .NET Framework Software Developer's Kit (SDK). Nástroj S.Č je velmi snadno použitelné. Příkaz příkazového řádku používá následující syntaxi:
    sn -k "C:\%DirectoryToPlaceKey%\%KeyName%.snk"
  17. Tento příkaz lze spustit z příkazového řádku Visual Studio .NET. Klepněte na tlačítko Start, přejděte na příkaz programy, přejděte na Microsoft Visual Studio.NET, přejděte na příkaz Nástroje Visual Studio .NET a klepněte na položku Visual Studio .NET příkazový. Na příkazovém řádku zadejte následující příkazy:
    sn -k "C:\ClassLibLCE\key.snk"
    Pokud knihovny tříd projektu není v této cestě, změňte cestu kořenové složky projektu pro projekt knihovny tříd.

    Klíč generován. Ověřte, že v aplikaci Solution Explorer vyberte ClassLibLCE a na panelu nástrojů Solution Explorer klepněte na tlačítko Zobrazit všechny soubory.

    Všimněte si položku key.snk pod ClassLibLCE.
  18. Protože tento klíč ještě není přidružen k sestavení knihovny tříd, vytvořit toto přidružení. V aplikaci Solution Explorer pod ClassLibLCE poklepejte AssemblyInfo.cs. V AssemblyKeyFile zadejte následující mezi existující uvozovek:
    "..\\..\\key.snk"
  19. Dokončete kód celé řešení podle zapojení nahoru formulář pro systém Windows do knihovny tříd. Nezapomeňte, že tento formulář je pouze pro demonstrační účely. Podstatě slouží jako "test nástroje". Přidejte příslušné odkazy.
    1. V aplikaci Solution Explorer pod HowToLCEodkazy klepněte pravým tlačítkem myši a v místní nabídce klepněte na tlačítko Přidat odkaz.
    2. Na kartě .NETslužby System.EnterpriseServices.
    3. Na kartě projektyClassLibLCE.
    4. Klepněte na tlačítko Vybrat.
    5. Klepněte na tlačítko OK.

      Všimněte si služby System.EnterpriseServices a ClassLibLCE položky uvedené v části odkazy.
  20. Editor kódu na kartu Form1.cs [návrh] poklepáním kdekoli na formulář vytvořit obslužnou rutinu události Form1_Load. Chcete-li tuto obslužnou rutinu události přidejte následující kód.

    Všimněte si, že jsou dva oddíly. První je výhradně z důvodu registrace knihovny tříd. Je použit pouze jednou. Druhý aktivační události událostí aplikace publisher.
    // 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. Stisknutím klávesy F5 spusťte aplikaci a registraci knihovny tříd.

    Tím odběratele přístupné, ale není dosud registrované pomocí služby COM +. Po načtení formuláře, zavřete jej. Toto je nejjednodušší metoda registrace sestavení .NET, takže můžete využít výhod služby COM +. Však zaregistrovat tímto způsobem musíte být přihlášeni k místnímu počítači s oprávněním správce. Pokud uživatelé, kteří používají aplikace nemají oprávněním správce do místních počítačů, můžete pomocí nástroje regasm.exe pro ně při nasazení aplikace zaregistrovat sestavení.
  22. Spusťte modul snap-in Služba komponent.

    Předplatitelé nelze nastavit pomocí atributů v .NET verze 1.0. Ale to lze provést ručně spuštěním modulu snap-in Služba komponent: Open Ovládacím, poklepejte na panel Nástroje pro správu a potom poklepejte na položku Služba komponent.

    Poznámka: Pokud chcete, můžete napsat kód automatizovat následující kroky pomocí knihovny Admin 1.0 COM +. Další informace prohlížet obsah knihovny v prohlížeči objektů.
  23. Rozbalte uzel Služba komponent. Rozbalte uzel počítače. Rozbalte položku Tento počítač. Rozbalte aplikace COM +. Rozbalte ClassLibLCE. Rozbalte položku součásti. Rozbalte ClassLibLCE.MySubscriber.
  24. Klepněte pravým tlačítkem myši na složku Odběry, přejděte na příkaz Nový a klepněte na tlačítko odběru.
  25. V COM + odběru Průvodce vytvořením klepněte na tlačítko Další. Vyberte možnost odebírat rozhraní IEvSink. Klepněte na tlačítko Další.
  26. Na stránce Vybrat třídu událostí klepněte ClassLibLCE.MyPublisher. (Toto je třída byl upraven pomocí atributu [EventClass].) Klepněte na tlačítko Další.
  27. Zadejte název, který chcete použít a potom zaškrtněte políčko Povolit odběr okamžitě. Klepněte na tlačítko Další. Klepněte na tlačítko Dokončit.

Kód pro soubor 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();
	}
}
				

Kód pro soubor 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("")]
				

Kód pro soubor 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();
		}
	}
}
				

Ověřte Works

  1. V okně Editor kódu komentář kód v sekci # 1 souboru Form1.cs a vložte kód oddílu # 2.
  2. Spustit pouze spustitelného souboru pro projekt HowToLCE. V nabídce vytvořit klepněte na příkaz Správce konfigurace. Zrušte zaškrtnutí políčka sestavení pro ClassLibLCE. Klepněte na tlačítko Zavřít.
  3. Stisknutím klávesy F5 spuštění aplikace v režimu ladění.
  4. Při načtení formuláře, zavřete jej.
  5. Stisknutím kombinace kláves CTRL + ALT + S spustit Server Explorer. Rozbalte položku Servers. Rozbalte computer name. Rozbalte protokoly událostí. Rozbalte aplikací. Rozbalte ClassLibLCE.

    Všimněte si dvě položky protokolu událostí.

Odstraňování potíží

  1. Aktualizovat v protokolu událostí zobrazit položky Server Explorer.
  2. Pokud změny knihovny tříd po spuštění prostřednictvím uvedený postupy a znovu sestavit knihovny tříd je velmi pravděpodobné, že sestavení uzamčena uživatelem služeb komponent. Tento problém vyřešit, použijte některou z následujících metod:
    • Součást služby IIS klepněte pravým tlačítkem myši a potom klepněte na příkaz Vypnout.

      Nebo
    • Součást odstranit, pokud chcete významné změny v kódu.



Odkazy

Další informace o událostech volně provázaných naleznete na následujícím webu:
Using Loosely Coupled Events
Další informace o implementaci a zavádění COM + nakonfigurovaná tříd naleznete na následujícím webu:

Vlastnosti

ID článku: 318185 - Poslední aktualizace: 28. února 2014 - Revize: 3.3
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft .NET Framework Class Libraries 1.0
Klíčová slova: 
kbnosurvey kbarchive kbmt kbhowtomaster KB318185 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:318185

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com