Udostępnij za pośrednictwem


Wskazówki: tworzenie składnika za pomocą Visual C#

Składniki zapewniają wielokrotnego użytku kod w postaci obiektów.Aplikacja, która używa składnika kodu, przez tworzenie obiektów i wywoływanie ich właściwości i metod, nazywa się klienta.Klient może lub nie może być w tym samym zestawie jako składnik, którego używa.

Następujące procedury opierać się na siebie, tak ważna jest kolejność, w którym wykonywana.

[!UWAGA]

Okien dialogowych i poleceń menu, którą widzisz mogą różnić się od tych opisanych w pomocy, w zależności od tego, aktywne ustawienia lub edition.Aby zmienić ustawienia, wybierz polecenie Importuj i Eksportuj ustawienia na Narzędzia menu.Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.

Tworzenie projektu

Aby utworzyć bibliotekę klas CDemoLib i składnik CDemo

  1. Z pliku menu, wybierz Nowy a projektu otworzyć Nowego projektu okno dialogowe.Wybierz Biblioteka klas szablon projektu z listy Visual C# typy projektów, a następnie wprowadź CDemoLib w Nazwa pole.

    [!UWAGA]

    Zawsze należy określić nazwę nowego projektu, podczas jej tworzenia.Ten sposób określa obszar nazw katalogu głównego, nazwy zestawu i nazwa projektu i zapewnia również, że składnik domyślny będzie poprawny obszaru nazw.

  2. W Solution Explorer, kliknij prawym przyciskiem myszy CDemoLib i wybierz Właściwości z menu skrótów.Warto zauważyć, że domyślny obszar nazw zawiera pole CDemoLib.

    Obszar nazw katalogu głównego jest używany przy przyporządkowywaniu nazw składników w zestawie.Na przykład, jeśli dwa zestawy składników o nazwie CDemo, można określić swoje CDemo za pomocą składnika CDemoLib.CDemo.

    Zamknij okno dialogowe.

  3. Z Projekt menu, wybierz polecenie Dodać składnik.

  4. W Dodaj nowy element okno dialogowe Wybierz Klasy składnika i typu CDemo.cs w Nazwa pole.Kliknij przycisk Dodaj utworzyć składnika.

    Składnik o nazwie CDemo jest dodawany do biblioteki klas.

  5. W Solution Explorer, kliknij prawym przyciskiem myszy CDemo.cs i wybierz polecenie Widok Kod z menu skrótów.Otwiera edytor kodu.

    Zawiadomienie : Component niezwłocznie po public partial class CDemo.W tej sekcji wyznacza klasy, z której dziedziczy swojej klasy.Domyślnie składnik dziedziczy z Component klasy oferowanych przez system.Component Klasy udostępnia wiele funkcji dla składnika, w tym możliwość używania projektantów.

  6. W Solution Explorer, kliknij prawym przyciskiem myszy Klasa Class1.cs została automatycznie i wybierz polecenie usunąć.Usuwa domyślnej klasy dołączonej Biblioteka klas, jak nie będzie ono wykorzystane w tym instruktażu.

  7. Z pliku menu, wybierz polecenie Zapisz wszystkie do zapisania projektu.

Dodawanie konstruktory i destruktory

Konstruktory kontrolować sposób, który składnik jest zainicjowana; Finalize metoda kontroluje sposób rozerwań ją w dół.Kod w konstruktorze i Finalize metody CDemo klasy utrzymuje licznikiem liczby CDemo obiektów istniejących.

Aby dodać kod konstruktora i destruktora klasy CDemo

  1. W Edytor kodu, dodać zmienne składowe, aby zachować bieżącą liczbę wystąpień CDemo klasy i numer identyfikacyjny dla każdego wystąpienia.

    public readonly int InstanceID;
    private static int NextInstanceID = 0;
    private static long ClassInstanceCount = 0;
    

    Ponieważ InstanceCount i NextInstanceID są zadeklarowane zmienne składowe static, istnieją tylko na poziomie klasy.Wszystkie wystąpienia CDemo dostępu tych członków będą używać tej samej lokalizacji w pamięci.Elementy statyczne zostaną zainicjowane po raz pierwszy CDemo klasy jest określona w kodzie.Może to być po raz pierwszy CDemo tworzony jest obiekt lub uzyskać dostępu do jednego z członków statyczne po raz pierwszy.

  2. Zlokalizuj public CDemo() i public CDemo(IContainer container), konstruktory domyślne dla CDemo klasy.W Visual C#, wszystkie konstruktory mają taką samą nazwę jak klasy.Składnik może mieć kilku konstruktorów z różnymi parametrami, ale one muszą mieć taką samą nazwę jak składnik.

    [!UWAGA]

    Poziom dostępu konstruktory decyduje o tym, które klienci będą mogli tworzyć wystąpień tej klasy.

  3. Dodaj następujący kod do public CDemo(), aby zwiększyć licznik wystąpień, gdy nowy CDemo jest tworzony oraz aby ustawić numer ID wystąpienia.

    [!UWAGA]

    Zawsze dodać kod po wywołaniu InitializeComponent.W tym punkcie wszelkie części składowe zostały zainicjowane.

    InstanceID = NextInstanceID ++;
    ClassInstanceCount ++;
    

    Jako readonly Członkowskie, InstanceID można ustawić tylko w konstruktorze.

    [!UWAGA]

    Użytkownicy znający wielowątkowość będzie wskazywanie zupełnie słusznie tego przypisywanie InstanceID i kolejnym NextInstanceID powinien być atomowej operacji.Tego i innych zagadnień związanych z wątków są przedstawione w Wskazówki: tworzenie prostego składnika wielowątkowego za pomocą języka C#.

  4. Po zakończeniu konstruktora należy dodać następujące metody:

    ~CDemo()
    {
       ClassInstanceCount --;
    }
    

    Ta metoda jest wywoływana destruktorai jest oznaczony przez znak tyldy (~) na początku nazwy klasy.Menedżer pamięci wywołuje destruktor tuż przed on ostatecznie ta pamięci zajmowanego przez CDemo obiektu.Implementując destruktora można wykonać oczyszczanie, tuż przed składnik jest usuwany z pamięci.Jednakże jak zobaczymy później w tym instruktażu, istnieją uzasadnione powody, aby zwolnić zasoby wcześniej.

Dodawanie właściwości do klasy

CDemo Klasy ma tylko jedną właściwość, statyczne właściwość, która umożliwia klientowi dowiedzieć się, jak wiele CDemo obiekty są w pamięci w danej chwili.W podobny sposób można utworzyć metody.

Aby utworzyć właściwości dla klasy CDemo

  • Dodaj następującą deklarację właściwości do CDemo klasy, aby umożliwić klientom pobieranie liczbę wystąpień CDemo.

    public static long InstanceCount
       {
          get
          {
             return ClassInstanceCount;
          }
       }
    

Testowanie składnika

Aby przetestować składnika, konieczne jest projekt, który korzysta z niego.Ten projekt musi być pierwszy projekt, który rozpoczyna się po naciśnięciu przycisku Uruchom.

Aby dodać projekt klienta CDemoTest jako projekt uruchamiania dla roztworu

  1. Z pliku menu, wskaż Dodaj i wybierz polecenie Nowy projekt otworzyć Dodać nowy projekt okno dialogowe.

  2. Wybierz Aplikacji Windows szablonu projektu i typu CDemoTest w Nazwa polu, a następnie kliknij przycisk OK.

  3. W Solution Explorer, kliknij prawym przyciskiem myszy CDemoTest i kliknij przycisk ustawiony jako uruchomienia projektu z menu skrótów.

Aby użyć CDemo części projektu badania klient musi mieć odwołanie do projektu biblioteki klas.Po dodaniu odwołania, jest dobrym pomysłem, aby dodać using instrukcji stosowania badania w celu uproszczenia korzystanie ze składnika.

Aby dodać odwołanie do projektu biblioteki klas

  1. W Solution Explorer, kliknij prawym przyciskiem myszy odniesienia węzeł znajdujący się bezpośrednio pod CDemoTesti wybierz polecenie Dodaj odwołanie z menu skrótów.

  2. W Dodaj odwołanie okno dialogowe Wybierz projektów kartę.

  3. Kliknij dwukrotnie CDemoLib klasy biblioteki projektu.CDemoLib pojawią się w folderze odniesienia węzeł CDemoTest projektu.

  4. W Solution Explorer, kliknij prawym przyciskiem myszy Form1.cs i wybierz Widok Kod z menu skrótów.

Dodawanie odwołania do CDemoLib pozwala na korzystanie w pełni kwalifikowanej nazwy CDemo składnik — to znaczy, CDemoLib.CDemo.

Aby dodać za pomocą instrukcji

  • Dodaje się using instrukcji do listy using sprawozdania w górnej części Edytor kodu do Form1.

    using CDemoLib;
    

    Dodawanie using instrukcji pozwala pominąć nazwę biblioteki i odnoszą się do typu składnika jako CDemo.

    Będzie teraz utworzyć i przetestować składnika za pomocą programu test.

Opis okresu istnienia obiektu

CDemoTest Program będzie ilustrują okres istnienia obiektu w.NET Framework, tworząc i zwalnianie dużej liczby CDemo obiektów.

Aby dodać kod do tworzenia i zwolnić obiekty CDemo

  1. Kliknij przycisk Form1.cs[Design aby powrócić do projektanta.

  2. Przeciągnij Button i Timer z Wszystkich Windows Forms na karcie Przybornik na Form1 powierzchni projektu.

    Nonvisual Timer składnik pojawia się na powierzchni odrębny Projekt poniżej formularza.

  3. Kliknij dwukrotnie ikonę dla timer1 do tworzenia metoda obsługi zdarzeń dla składnika timer1 Tick zdarzenia.Umieść następujący kod w metodzie obsługi zdarzeń.

    this.Text = "CDemo instances: " + CDemo.InstanceCount;
    

    Na każdej osi timer, podpis formularza będą wyświetlane bieżąca liczba instancji dla CDemo klasy.Nazwa klasy jest używany jako kwalifikator dla statycznego InstanceCount właściwość — istnieje potrzeba utworzenia wystąpienia CDemo uzyskać dostępu do członka statycznego.

  4. Zlokalizuj konstruktora dla Form1 (public Form1()) i Dodaj następujący kod po wywołaniu InitializeComponent().

    timer1.Enabled = true;
    

    Spowoduje to uruchomienie timer, zaraz po utworzeniu formularza.

  5. Kliknij przycisk Form1.cs [projekt tab, aby powrócić do projektanta.

  6. Kliknij dwukrotnie Button na Form1, aby utworzyć metodę obsługi zdarzeń dla tego przycisku Click zdarzenia.Umieść następujący kod w metodzie obsługi zdarzeń.

    CDemo cd;
    int ct;
    for (ct = 0; ct < 1000; ct++)
       cd = new CDemo();
    

    Ten kod może wyglądać dziwnie do Ciebie.Jak każde wystąpienie CDemo jest tworzony, poprzednie wystąpienie jest wydany.Gdy for zakończeniu pętli, będzie tylko jedno wystąpienie CDemo lewej.Kiedy metoda obsługi zdarzeń, nawet w tej instancji zostanie zwolnione, ponieważ zmienna cd przejdzie poza zakresem.

    Jak może odgadłeś już, rzeczy nie stanie się całkiem w ten sposób.

Aby uruchomić i debugowania projektów CDemoTest i CDemo

  1. Naciśnij klawisz F5 uruchomić roztworu.

    Projekt klient chce się uruchomić, i Form1 będą wyświetlane.Należy zauważyć, że podpis formularza wyświetla "wystąpienia CDemo: 0".

  2. Kliknij przycisk.Podpis formularza należy wyświetlić "wystąpienia CDemo: 1000".

    Wystąpienia CDemo zostały wszystkie wydane przez czas przycisku Click zakończeniu procedury obsługi zdarzeń.Dlaczego nie zostały one sfinalizowany?Krótko mówiąc Menedżer pamięci Kończenie znajdujących się obiekty w tle, na niski priorytet.Priorytet jest tylko Fall, jeśli system zacznie brakować pamięci.To z opóźnieniem- schemat kolekcji garbage pozwala na bardzo szybki obiekt alokacji.

  3. Kliknij przycisk więcej kilka razy, oglądając podpis.W pewnym momencie liczbę wystąpień zostanie nagle upuścić.Oznacza to, że Menedżer pamięci ma regeneracji pamięci niektórych obiektów.

    [!UWAGA]

    Jeśli kliknięte więcej niż 10 razy i liczba CDemo nie zmniejszyła się w przypadkach, może wystąpić konieczność dopasowania kod, tak więc korzysta z większej ilości pamięci.Zamknij formularz, aby powrócić do środowiska programowania i zwiększenie liczby iteracji w for pętli do 10000.Następnie ponownie uruchom projekt.

  4. Powtórz krok 3.Otrzymasz oddalić ten czas, zanim Menedżer pamięci Kończenie więcej obiektów znajdujących się.

    W rzeczywistości, przy każdym Powtórz krok 3, prawdopodobnie można przydzielić więcej CDemo obiektów przed etapów Menedżera pamięci.Wynika to więcej i bardziej Visual Studio jest zamieniana, pozostawiając więcej miejsca dla wystąpienia CDemo.

  5. Zamknij formularz, aby powrócić do środowiska programowania.

Zobacz też

Inne zasoby

Programowanie przy użyciu składników

Tworzenie składników — Wskazówki