Aracılığıyla paylaş


İzlenecek yol: Visual C# ile bir bileşen geliştirme

Nesneleri, yeniden kullanılabilir kod bileşenleri sağlar.Nesne oluşturma ve bunların özelliklerini ve yöntemlerini çağıran bir bileşenin kodu kullanan bir uygulama olarak başvurulan bir İstemci.Bir istemci olabilir veya kullandığı bir bileşeni olarak aynı derlemede olmayabilir.

İçinde gerçekleştirilmeleri sırası önemlidir birbirine bağlı, aşağıdaki yordamları oluşturun.

[!NOT]

Gördüğünüz iletişim kutuları ve menü komutları, etkin ayarlarınıza ve ürün sürümüne bağlı olarak Yardım menüsünde açıklanana göre farklılık gösterebilir.Ayarlarınızı değiştirmek için Araçlar menüsünden İçeri ve Dışarı Aktarma Ayarları'nı seçin.Daha fazla bilgi için bkz. Visual Studio ayarları.

Projeyi Oluşturma

CDemoLib sınıf kitaplığı ve CDemo bileşeni oluşturmak için

  1. Dan Dosya menüsünü seçin Yeni ve Proje açmak için Yeni bir proje iletişim.Seçin Class Library listesinden proje şablonu Visual C# proje tipleri ve basın CDemoLib , ad kutusu.

    [!NOT]

    Oluştururken her zaman yeni bir proje adını belirtin.Böylece kök ad, derleme adı ve proje adını ayarlar ve varsayılan bileşen doğru ad alanında olmasını da sağlar.

  2. İçinde Solution Explorer, sağ CDemoLib ve özelliklerini kısayol menüsünden.Dikkat varsayılan ad boşluğu kutusunu içeren CDemoLib.

    Kök ad derleme bileşenleri adlarını nitelemek için kullanılır.İki derlemeler adlı bileşenleri sağlar, örneğin, CDemo, belirtebileceğiniz, CDemo bileşenini kullanarak CDemoLib.CDemo.

    İletişim kutusunu kapatın.

  3. Dan Proje menüsünden seçin Bileşen ekleme.

  4. İçinde Add New Item iletişim kutusunda seçin Bileşen sınıfı ve CDemo.cs , adı kutusu.Tıklatın Ekle bileşen oluşturmak için.

    Adlı bir bileşeni CDemo Sınıf Kitaplığı'na eklenir.

  5. İçinde Solution Explorer, sağ CDemo.cs ve View Code kısayol menüsünden.Kod Düzenleyicisi'ni açar.

    Bildirimin : Component hemen sonra public partial class CDemo.Bu bölümde, sınıfınızın devraldığı sınıfı atar.Bir bileşen devraldığı varsayılan olarak, Component sistem tarafından sağlanan sınıf.Component Sınıfı tasarımcıları kullanma yeteneği de dahil olmak üzere, bileşen için birçok özellik sağlar.

  6. İçinde Solution Explorer, sağ Class1.cs ve silmek.Bu izlenecek yolda kullanılmayacak şekilde bu sınıf kitaplığı ile sağlanan varsayılan sınıfı siler.

  7. Dan Dosya menüsünden seçin Tümünü Kaydet projeyi kaydetmek için.

Kurucular ve yıkıcı ekleme

Kurucular bileşeninizin başlatılan biçimini denetlemek; Finalize yöntemi çıkarır aşağı biçimini denetler.Kod Oluşturucusu içinde ve Finalize yöntemi, CDemo sınıfı tutar sayısı, çalışan sayısı CDemo varlığı nesneleri.

Yapıcı ve yıkıcı CDemo sınıfının kodunu eklemek için

  1. İçinde Kod Düzenleyicisi'ni, çalışan bir tutmak için üye değişken ekleyin örneklerinin toplam CDemo sınıf ve her örneği için bir kimlik numarası.

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

    Çünkü InstanceCount ve NextInstanceID üye değişkenler olarak bildirilen static, yalnızca sınıf düzeyinde kalırlar.Tüm örneklerini CDemo bu erişim üyeleri aynı bellek konumlarını kullanacaktır.Static üyeler ilk kez başlatılan CDemo sınıf kodu denir.Bu ilk kez olabilir bir CDemo nesne oluşturulduğunda veya statik üyelerinden biri ilk kez erişilir.

  2. Bulun public CDemo() ve public CDemo(IContainer container), varsayılan oluşturucuları için CDemo sınıfı.De Visual C#, bütün sınıf ile aynı ada sahip.Bileþeniniz farklı parametrelerle birkaç Kurucular olabilir, ancak tüm bileşeninizin adıyla aynı olmalıdır.

    [!NOT]

    Hangi istemcilerin sınıfın örneklerini oluşturamazsınız Kurucular erişim düzeyini belirler.

  3. Aşağıdaki kodu ekleyip public CDemo(), yeni bir zaman örnek sayısı artırmak için CDemo oluşturulduğu ve örnek kimliği numarasını ayarlamak için.

    [!NOT]

    Her zaman çağrısının kodunuzu eklemek InitializeComponent.Bu noktada, kendisini oluşturan bileşenlerin başlatıldı.

    InstanceID = NextInstanceID ++;
    ClassInstanceCount ++;
    

    Olarak bir readonly üyesi, InstanceID yapıcı yalnızca ayarlanabilir.

    [!NOT]

    Kullanıcılar çoklu kullanım ile tanıdık işaret rightly oldukça bu atama dışarı InstanceID ve artan NextInstanceID bir Atomik İşlem olmalıdır.Bu işlem ve iş parçacığı için ilgili diğer sorunlar içinde gösterildiği İzlenecek yol: Visual C# ile basit bir çok iş parçacıklı bileşen geliştirme.

  4. Kurucu sonunda aşağıdaki yöntemi ekleyin:

    ~CDemo()
    {
       ClassInstanceCount --;
    }
    

    Bu yöntem bir yıkıcıve sınıf adının önüne tilde karakteri (~) değeriyle belirtilir.Bellek Yöneticisi'ni yalnızca bellek tarafından kaplanan son biçimiyleilgili önce yıkıcı çağıran CDemo nesne.Bir yýkýcý uygulayarak yalnızca bileşeninizin bellekten kaldırılmadan önce temizleme gerçekleştirebilirsiniz.Ancak, bu yönergeyi göreceğiniz gibi daha önce kaynakları serbest bırakmak için iyi nedenleri vardır.

Sınıf için bir özellik ekleme

CDemo Sınıf olan yalnızca bir özellik, istemci nasıl öğrenmek izin veren bir statik özellik birçok CDemo herhangi bir anda bellekte olan nesneler.Yöntemler benzer şekilde oluşturulabilir.

CDemo sınıfı için bir özellik oluşturmak için

  • Aşağıdaki özellik bildirimi ekleme CDemo sınıfı, istemcilerin örneklerinin sayısını almak, CDemo.

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

Bileşen Sınaması

Sınama bileşeni kullanan bir proje gerekir.Bu proje Çalıştır düğmesine bastığınızda başlatan ilk proje olması gerekir.

Çözüm için baþlangýç projesi olarak CDemoTest istemci proje eklemek için

  1. Dan Dosya menüsü, Ekle ve Yeni bir proje açmak için Add New Project iletişim kutusu.

  2. Seçin Windows Application proje şablonu ve Yaz CDemoTest , ad kutusunu ve ardından Tamam.

  3. İçinde Solution Explorer, sağ CDemoTest 'ı tıklatın ve Set as Startup Project'i kısayol menüsünden.

Kullanmak için CDemo bileşeni, istemci projesinin bir class library projesi başvuru olması gerekir.Başvuru ekledikten sonra eklemek iyi bir fikir olduğu bir using bileşeninin kullanımını kolaylaştırmak için sınama uygulaması için deyimi.

Bir sýnýf kitaplýðý projesine baþvuru eklemek için

  1. İçinde Solution Explorer, sağ başvuruları düğümü hemen altındaki CDemoTestve Add Reference kısayol menüsünden.

  2. İçinde Add Reference Seç iletişim kutusunda projeleri sekmesi.

  3. Çift CDemoLib class library projesi.CDemoLib altında görünür başvuruları düğümü için CDemoTest proje.

  4. İçinde Solution Explorer, sağ Form1.cs ve View Code kısayol menüsünden.

Başvuru ekleyerek CDemoLib tam nitelikli adını kullanmanızı sağlar CDemo bileşen — yani, CDemoLib.CDemo.

Using ekleme deyimi

  • Aşağıdaki using listesini ifadesine using üstündeki ifadeleri Kod Düzenleyicisi'ni için Form1.

    using CDemoLib;
    

    Ekleme using deyimi, kitaplık adını gözardı et ve bileşen türü olarak başvurmak verir CDemo.

    Şimdi oluşturmak ve bileşeninizin sınamak için bir sınama programı kullanın.

Nesne yaşam anlama

CDemoTest Program nesnesinin yaşam süresi göstermek.net Framework oluşturarak ve çok sayıda serbest CDemo nesneler.

Oluşturma ve CDemo nesneleri serbest kod eklemek için

  1. ' I Editorpenceresinin] Tasarımcısı dönün.

  2. Sürükle bir Button ve bir Timer dan Tüm Windows Forms sekmesinde araç üzerine Form1 tasarım yüzeyi.

    Nonvisual Timer bileşeni formun altındaki ayrı tasarım yüzeyi görünür.

  3. Simgesini çift tıklatın timer1 timer1 bileşen için bir olay işleme yöntemi oluşturmak için Tick olay.Olay işleme yönteminde aşağıdaki kodu yerleştirin.

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

    Her süreölçer tick üzerinde geçerli örnek sayısı için formun başlık görüntüler CDemo sınıfı.Sınıf adı için statik bir niteleyici kullanılan InstanceCount özelliği — bir örneğini oluşturmaya gerek yoktur CDemo statik üyesi erişmek için.

  4. Kurucusu bulun Form1 (public Form1()), çağrı sonra aşağıdaki kodu ekleyin ve InitializeComponent().

    timer1.Enabled = true;
    

    Form oluşturulana kadar bu süreölçer başlatacaktır.

  5. Tıklatın Form1.cs [Design Tasarımcısı dönmek için sekme.

  6. Çift Button , Form1, düğme için bir olay işleme yöntemi oluşturmak için Click olay.Olay işleme yönteminde aşağıdaki kodu yerleştirin.

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

    Bu kod, garip görünebilir.Her bir örneği olarak CDemo olan oluşturulan, önceki örnek serbest bırakılır.Zaman for döngü yapılır, tek bir örneği olur CDemo sol.Olay işleme yöntemi çıktığında bile bu örneği, çünkü yayımlanacak değişken cd kapsam dışına gidecek.

    Siz zaten tahmin gibi şeyler oldukça bu şekilde gerçekleştirilmez.

Çalıştırın ve CDemoTest ve CDemo projeleri hata ayıklamak için

  1. Press F5 çözüm başlatmak için.

    İstemci proje başlayacak, ve Form1 görüntülenir.Formun başlığını görüntüler dikkat edin "CDemo örnekleri: 0".

  2. Düğmeyi tıklayın.Formun resim yazısının görüntülenmesi gereken "CDemo örnekleri: 1000".

    Örnekleri CDemo olan düğmenin tüm serbest zaman Click olay işleme yordamı tamamlandı.Neden bunlar sonuna yapmadıysanız?Kısaca, bellek yöneticisi nesneleri daha düşük öncelikte arka planda erecektir.Sistem belleği azalmış durumdaysa öncelik yalnızca indirgenmesine.Bu geç nesne çok hızlı tahsisatını çöp toplama düzeni sağlar.

  3. Times, resim yazısı seyretmek birkaç daha düğmesini tıklatın.Belirli bir noktada aniden örneklerinin sayısını bırakın.Bu, bellek yöneticisi bazı nesnelerin bellek iadesi anlamına gelir.

    [!NOT]

    10'dan fazla zamanları ve sayısını tıklattıysanız, CDemo örneklerine olmayan azaltılması, böylece daha fazla bellek kullandığı kodu ayarlamanız gerekebilir.Geliştirme ortamına geri dönmek için formu kapatıp yineleme sayısını artırmak for 10000 döngü.Daha sonra projeyi yeniden çalıştırın.

  4. 3 Numaralı adımı yineleyin.Daha fazla bellek yöneticisi erecektir önce bu kez uzağına alırsınız.

    Aslında, her zaman 3 adımı yineleyin, muhtemelen ayıramadığı daha fazla olacak CDemo bellek yöneticisi adımları önce nesneleri.Bu olduğundan daha fazla ve daha fazla Visual Studio takas çıkışı, daha fazla alan bırakmak örneklerini CDemo.

  5. Geliştirme ortamına geri dönmek için formu kapatın.

Ayrıca bkz.

Diğer Kaynaklar

Bileşenler ile programlama

Bileşen geliştirme izlenecek yollar