Názorný postup: Vytváření komponent pomocí jazyka Visual Basic
Komponenty poskytují opakovaně použitelný kód objektů.Aplikace, která používá kód komponenty, vytváření objektů a jejich vlastností a metod, volání je označována jako klienta.Klient může nebo nemusí být ve stejném sestavení jako součást, kterou používá.
Následující postupy stavět na ostatní, tak důležité je pořadí, ve kterém je jejich provedení.
[!POZNÁMKA]
Dialogová okna a příkazy v nabídkách menu, které vidíte, se mohou lišit od těch popsaných v nápovědě, v závislosti na vašich aktivních nastaveních nebo edici.Chcete-li změnit nastavení, zvolte Import and Export Settings v menu Nástroje.Další informace naleznete v tématu Nastavení aplikace Visual Studio.
Vytváření projektu
Vytvoření knihovny tříd CDemoLib a CDemo součást
Z soubor nabídce vyberte Nový a projektu otevřete Nový projekt dialogové okno.Vyberte Knihovna tříd projektu šablonu ze seznamu typů projektu jazyka Visual Basic a zadejte CDemoLib v název pole.
[!POZNÁMKA]
Vždy zadávejte název nového projektu, když ho vytváříte.Tím nastaví kořenový obor názvů, název sestavení a název projektu a také zajišťuje, že výchozí součásti budou ve správném oboru názvů.
V Aplikaci Solution Explorer, klepněte pravým tlačítkem na CDemoLib a vyberte Vlastnosti z místní nabídky.Všimněte si, že kořenový obor názvů pole obsahuje CDemoLib.
Kořenový obor názvů lze kvalifikovat názvy částí v sestavení.Například dvě sestavení poskytují součásti s názvem CDemo, můžete zadat vaše CDemo komponenty pomocí CDemoLib.CDemo.
Zavřete dialogové okno.
Z projektu nabídce zvolte Přidat součást.V Přidat novou položku vyberte položku Třídy komponenty a CDemo.vb.v název pole.Součást s názvem CDemo je přidán do knihovny tříd.
V Aplikaci Solution Explorer, klepněte Zobrazit všechny soubory tlačítko.Otevřít CDemo.vb uzel zobrazit CDemo.Designer.vb souboru.Pravým tlačítkem myši na CDemo.Designer.vb a zvolte Zobrazení kódu z místní nabídky.Otevře editor kódu
Oznámení Inherits System.ComponentModel.Component přímo pod Partial Public Class CDemo.V této části se označí třídy, ze kterého dědí své třídy.Součást ve výchozím nastavení dědí z Component třídy poskytované systémem.Component Třída poskytuje mnoho funkcí pro komponenty, včetně možnosti použití návrháře.
Locate Public Sub New().Vyberte metodu celý subjekt a vyjmout z CDemo.Designer.vb soubor stisknutím kláves CTRL-X.
V Aplikaci Solution Explorer, klepněte pravým tlačítkem na CDemo.vb a zvolte Zobrazení kódu z místní nabídky.Spustí editor kódu.
Výběr vložit do textu CDemo třídy.To umožňuje pracovat na nový bez rušení z návrháře.
V Aplikaci Solution Explorer, klepněte pravým tlačítkem na Class1.vb a zvolte Odstranit.Tím odstraníte výchozí třídu, která je součástí knihovny třídy není použitý v tomto návodu.
Z soubor nabídce zvolte Uložit všechny uložte projekt.
Přidání konstruktory a finalizačních metod
Konstruktory řízení způsobu, jakým je inicializován komponenty; Finalize metoda řídí způsob jeho lomy dolů.Kód v konstruktoru a Finalize metodu CDemo třídy udržuje jako průběžný počet počet CDemo objekty v existenci.
Přidat kód pro konstruktor a finalizačních metod třídy CDemo
V Editor kódu, přidat proměnné členů udržovat průběžný celkový počet výskytů CDemo třídy a identifikační číslo pro každou instanci.
Public ReadOnly InstanceID As Integer Private Shared NextInstanceID As Integer = 0 Private Shared ClassInstanceCount As Long = 0
Protože InstanceCount a NextInstanceID členské proměnné jsou deklarovány Shared, existují pouze na úrovni třídy.Všechny výskyty CDemo , přístup k těmto členům bude používat stejné umístění paměti.Sdílené členy bude inicializován první CDemo je třída uvedená v kódu.To může být první CDemo je vytvořen objekt nebo prvním jednoho z členů sdíleného přístupu.
Vyhledejte Public Sub New() a Public Sub New(Container As System.ComponentModel.IContainer), výchozí konstruktory pro CDemo třídy.V Visual Basic, jsou všechny konstruktory pojmenované New.Komponenta může mít několik konstruktory, s různými parametry, ale musí mít název New.
[!POZNÁMKA]
Úroveň přístupu konstruktory Určuje, jaké klienti budou moci vytvořit instance třídy.V jiných verzích jazyka Visual Basic byl řízen vytvoření objektu Instancing vlastnosti; Pokud jste použili Instancing vlastnost, kterou může být užitečné přečíst Použití změn v jazyce Visual Basic pouze instance komponenty.
Přidejte následující kód na Sub New(), přibývá počet instancí, když nový CDemo je vytvořen a číslo ID instance.
[!POZNÁMKA]
Vždy přidat kód po volání InitializeComponent.V daném okamžiku všechny použité komponenty byly inicializovány.
InstanceID = NextInstanceID NextInstanceID += 1 ClassInstanceCount += 1
Jako ReadOnly člena, InstanceID lze nastavit pouze v konstruktoru.
[!POZNÁMKA]
Ukázání na poměrně stanoviska tohoto přiřazení uživatelé znají multithreading bude InstanceID a přírůstkového NextInstanceID by měla být atomická operace.Tato a další problémy související s podprocesy jsou znázorněny v Názorný postup: Vytváření jednoduché komponenty s více podprocesy pomocí jazyka Visual Basic.
Po skončení konstruktor přidáte následující metodu:
Protected Overrides Sub Finalize() ClassInstanceCount -= 1 End Sub
Volání správce paměti Finalize uvolňuje těsně před jeho konečně volné paměti obsazené CDemo objektu.Finalize Metoda pochází s Object, všechny typy odkazů v kořenovém adresáři.Hierarchie třídy NET.Přepsáním Finalize, těsně před komponenty je odebrán z paměti lze provést vyčištění.Jak uvidíte dále v tomto návodu, existují dobré důvody k uvolnění prostředků dříve.
Přidání vlastnosti třídy
CDemo Třídy má pouze jednu vlastnost, sdílená vlastnost, která umožňuje klientovi o mnoho CDemo objekty jsou v paměti v daném okamžiku.Podobným způsobem lze vytvořit metody.
Vytvořit vlastnost CDemo třídy
Přidat následující prohlášení vlastnost CDemo třídy a umožňuje klientům získat počet instancí CDemo.
Public Shared ReadOnly Property InstanceCount() As Long Get Return ClassInstanceCount End Get End Property
[!POZNÁMKA]
Syntaxe deklarace vlastnosti se liší od použitých v předchozích verzích jazyka Visual Basic.Další informace o změně syntaxe Property Procedure Changes for Visual Basic 6.0 Users.
Testování komponenty
Test součásti, je třeba projekt, který ji používá.Tento projekt musí být první projekt, který se spustí po stisknutí klávesy Spustit tlačítko.
Přidat jako spuštění projektu řešení projektu klienta CDemoTest
Z soubor nabídce přejděte na Přidat a zvolte Nový projekt otevřete Přidat nový projekt dialogové okno.
Vyberte Aplikace systému Windows šablona projektu a typ CDemoTest v název a klepněte na tlačítko OK.
V Aplikaci Solution Explorer, klepněte pravým tlačítkem na CDemoTest a na nastavit jako spuštění projektu v místní nabídce.
Chcete-li použít CDemo součást testu projektu klient musí mít odkaz na projekt knihovny tříd.Po přidání odkazu, je vhodné přidat Imports prohlášení testovací aplikace pro zjednodušení používání komponenty.
Chcete-li přidat odkaz na projekt knihovny tříd
V Aplikaci Solution Explorer, klepněte Zobrazit všechny soubory tlačítko.Klepněte pravým tlačítkem myši odkazy uzel bezprostředně pod CDemoTesta vyberte Přidat odkaz na z místní nabídky.
V dialogovém okně Přidat odkaz vyberte kartu Projekty.
Poklepejte na projekt knihovny tříd CDemoLib.Pod uzlem Odkazy projektu CDemoTest se objeví CDemoLib.
V Aplikaci Solution Explorer, klepněte pravým tlačítkem na Form1.vb a vyberte Zobrazení kódu z místní nabídky.
Přidání odkazu na CDemoLib umožňuje použít úplný název CDemo součást –, CDemoLib.CDemo.
Přidání příkazu dovozy
Přidejte následující Imports do horní části prohlášení Editor kódu pro Form1, výše uvedené Class prohlášení:
Imports CDemoLib
Přidání Imports prohlášení umožňuje vynechat název knihovny a odkazují na typ komponenty jako CDemo.Další informace týkající Imports prohlášení, viz Obory názvů v aplikaci Visual Basic.
Bude nyní vytvořit a používat testovací program testování komponenty.
Principy životnost objektu
CDemoTest Program bude ilustrují životnost objektu v .NET Framework vytvořením a uvolnění velkého počtu CDemo objektů.
Přidání kódu k vytvoření a uvolnit objekty CDemo
Klepněte na Form1.vb[Design se vraťte do okna Návrhář.
Přetáhněte Button a Timer z Všechny model Windows Forms kartě nástrojů do Form1 plochy návrhu.
Nonvisual Timer komponenty se zobrazí na samostatné návrhová plocha pod formulářem.
Poklepejte na ikonu Timer1 vytvořte metodu zpracování událostí u komponent Timer1 Tick událostí.Umístěte následující kód v metodě zpracování událostí.
Me.Text = "CDemo instances: " & CDemo.InstanceCount
Na všech značek časovač titulek formuláře zobrazí aktuální počet instancí pro CDemo třídy.Název třídy se používá jako kvalifikátor pro sdíleného InstanceCount vlastnost – není nutné vytvořit instanci CDemo přístup k sdílenému členovi.
Klepněte Form1.vb [návrh kartu vrátíte Návrhář.
Pravým tlačítkem myši na Timer1 a vyberte Vlastnosti z místní nabídky.V Vlastnosti okno, nastavte hodnotu jeho Enabled vlastnost True.Jakmile je vytvořen ve formuláři spustí časovač.
Poklepejte Button na Form1, vytvořte metodu zpracování událostí na tlačítku pro Click událostí.Umístěte následující kód v metodě zpracování událostí.
Dim cd As CDemo Dim ct As Integer For ct = 1 To 1000 cd = New CDemo Next
Tento kód může vypadat podivné vám.Jako každá instance CDemo je vytvořena, je vydána předchozí instance.Když For smyčka provádí, bude existovat pouze jedna instance CDemo vlevo.V případě, že odpisová metoda zpracování událostí, dokonce instanci budou vydány, protože proměnná cd přejde mimo rozsah.
Jak vám může mít uhodnout již, nebude nástroj událostem poměrně tímto způsobem.
Spustit a ladění projekty CDemoTest a CDemo
Stiskněte klávesu F5 spusťte řešení.
Spustit klienta projektu, a Form1 se zobrazí.Všimněte si, že titulek formuláře zobrazí "CDemo instance: 0".
Klikněte na tlačítko.Zobrazí titulek formuláře "CDemo instance: 1000".
Instance CDemo byly uvolněny všechny podle času na tlačítko Click dokončení postupu zpracování událostí.Proč jste jim byla dokončena?Správce paměti v krátkosti dokončí objekty na pozadí nízkou prioritou.Priorita pouze bumped, pokud systém získává nedostatku paměti.Tato lazy schéma sběr odpadků umožňuje velmi rychlé objekt přidělení.
Klepněte na tlačítko několik dalších doby sledování titulek.V některých případech bude počet instancí náhle přetažení.To znamená, že správce paměti má regenerované paměti některých objektů.
[!POZNÁMKA]
Pokud jste vybrali více než desetkrát a počet CDemo není instancí poklesla, bude pravděpodobně nutné upravit kód tak, aby používala více paměti.Zavřete formulář se vrátíte do vývojového prostředí a zvýšit počet iterací v For smyčky na 10 000.Spusťte znovu projektu.
Opakujte krok 3.Dostanete dále tuto dobu před správce paměti dokončí více objektů.
Ve skutečnosti při každém opakujte krok 3, nebude pravděpodobně možné přidělit více CDemo objekty před správce paměti krocích.Totiž více z Visual Studio jsou odloženy, opouští více místa pro instance CDemo.
Zavřete formulář se vrátíte do vývojového prostředí.