(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original

MulticastDelegate-Klasse

Stellt einen Multicastdelegaten dar, d. h. einen Delegaten, in dessen Aufrufliste sich mehrere Elemente befinden können.

System.Object
  System.Delegate
    System.MulticastDelegate

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class MulticastDelegate : Delegate

Der MulticastDelegate-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Geschützte MethodeMulticastDelegate(Object, String)Initialisiert eine neue Instanz der MulticastDelegate-Klasse.
Geschützte MethodeMulticastDelegate(Type, String)Initialisiert eine neue Instanz der MulticastDelegate-Klasse.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftUnterstützt von XNA Framework1kswf507.PortableClassLibrary(de-de,VS.100).gifMethodRuft die Methode ab, die durch den Delegaten dargestellt wird. (Von Delegate geerbt.)
Öffentliche EigenschaftUnterstützt von XNA Framework1kswf507.PortableClassLibrary(de-de,VS.100).gifTargetRuft die Klasseninstanz ab, für die der aktuelle Delegat die Instanzenmethode aufruft. (Von Delegate geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA FrameworkCloneErstellt eine flache Kopie des Delegaten. (Von Delegate geerbt.)
Geschützte MethodeUnterstützt von XNA FrameworkCombineImplKombiniert diesen Delegate mit dem angegebenen Delegate zu einem neuen Delegaten. (Überschreibt Delegate.CombineImpl(Delegate).)
Öffentliche Methode1kswf507.PortableClassLibrary(de-de,VS.100).gifDynamicInvokeRuft die durch den aktuellen Delegaten dargestellte Methode dynamisch (mit später Bindung) auf. (Von Delegate geerbt.)
Geschützte MethodeDynamicInvokeImplRuft die durch den aktuellen Delegaten dargestellte Methode dynamisch (mit später Bindung) auf. (Von Delegate geerbt.)
Öffentliche MethodeUnterstützt von XNA Framework1kswf507.PortableClassLibrary(de-de,VS.100).gifEqualsBestimmt, ob dieser Multicastdelegat und das angegebene Objekt übereinstimmen. (Überschreibt Delegate.Equals(Object).)
Geschützte MethodeUnterstützt von XNA FrameworkFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)

In XNA Framework wird dieser Member von Finalize() überschrieben.
Öffentliche MethodeUnterstützt von XNA Framework1kswf507.PortableClassLibrary(de-de,VS.100).gifGetHashCodeGibt den Hashcode für diese Instanz zurück. (Überschreibt Delegate.GetHashCode().)
Öffentliche MethodeUnterstützt von XNA Framework1kswf507.PortableClassLibrary(de-de,VS.100).gifGetInvocationListGibt die Aufrufliste dieses Multicastdelegaten in der Reihenfolge der Aufrufe zurück. (Überschreibt Delegate.GetInvocationList().)
Geschützte MethodeGetMethodImplGibt eine durch den aktuellen MulticastDelegate dargestellte statische Methode zurück. (Überschreibt Delegate.GetMethodImpl().)
Öffentliche MethodeGetObjectDataFüllt ein SerializationInfo-Objekt mit allen für das Serialisieren dieser Instanz erforderlichen Daten aus. (Überschreibt Delegate.GetObjectData(SerializationInfo, StreamingContext).)
Öffentliche MethodeUnterstützt von XNA Framework1kswf507.PortableClassLibrary(de-de,VS.100).gifGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte MethodeUnterstützt von XNA Framework1kswf507.PortableClassLibrary(de-de,VS.100).gifMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Geschützte MethodeUnterstützt von XNA FrameworkRemoveImplEntfernt ein Element aus der Aufrufliste dieses MulticastDelegate, das gleich dem angegebenen Delegaten ist. (Überschreibt Delegate.RemoveImpl(Delegate).)
Öffentliche MethodeUnterstützt von XNA Framework1kswf507.PortableClassLibrary(de-de,VS.100).gifToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentlicher OperatorStatischer MemberUnterstützt von XNA Framework1kswf507.PortableClassLibrary(de-de,VS.100).gifEqualityBestimmt, ob zwei MulticastDelegate-Objekte gleich sind.
Öffentlicher OperatorStatischer MemberUnterstützt von XNA Framework1kswf507.PortableClassLibrary(de-de,VS.100).gifInequalityBestimmt, ob zwei MulticastDelegate-Objekte ungleich sind.
Zum Seitenanfang

MulticastDelegate ist eine besondere Klasse. Compiler und andere Tools können von dieser Klasse ableiten, es ist aber nicht möglich, explizit von ihr abzuleiten. Das gleiche gilt für die Delegate-Klasse.

Zusätzlich zu den Methoden, die Delegattypen von MulticastDelegate erben, stellt die Common Language Runtime zwei spezielle Methoden bereit: BeginInvoke und EndInvoke. Weitere Informationen über diese Methoden finden Sie unter Asynchrones Aufrufen von synchronen Methoden.

Ein MulticastDelegate verfügt über eine aus einem oder mehreren Elementen bestehende verkettete Liste von Delegaten, die als Aufrufliste bezeichnet wird. Wenn ein Multicastdelegat aufgerufen wird, werden die Delegaten in der Reihenfolge synchron aufgerufen, in der sie in der Liste aufgeführt sind. Wenn bei der Ausführung der Liste ein Fehler auftritt, wird eine Ausnahme ausgelöst.

Das folgende Beispiel veranschaulicht die Verwendung einer von MulticastDelegate abgeleiteten Klasse.


using System;

    // This class contains strings. It has a member method that
    // accepts a multicast delegate as a parameter and calls it.

    class HoldsStrings
    {
        // The following line causes the compiler to generate
        // a new delegate class named CheckAndPrintDelegate that
        // inherits from System.MulticastDelegate.
        public delegate void CheckAndPrintDelegate(string str);

        // An ArrayList that holds strings
        private System.Collections.ArrayList myStringArray = new System.Collections.ArrayList();

        // A method that adds more strings to the Collection
        public void addstring( string str) {
            myStringArray.Add(str);
        }

        // Iterate through the strings and invoke the method(s) that the delegate points to
        public void PrintAllQualified(CheckAndPrintDelegate myDelegate) {
            foreach (string str in myStringArray) {
                myDelegate(str);
            }
        }
    }   //end of class HoldsStrings

    // This class contains a few sample methods
    class StringFuncs
    {
        // This method prints a string that it is passed if the string starts with a vowel
        public static void ConStart(string str) {
            if (!(str[0]=='a'||str[0]=='e'||str[0]=='i'||str[0]=='o'||str[0]=='u'))
                Console.WriteLine(str);
        }

        // This method prints a string that it is passed if the string starts with a consonant
        public static void VowelStart(string str) {
            if ((str[0]=='a'||str[0]=='e'||str[0]=='i'||str[0]=='o'||str[0]=='u'))
                Console.WriteLine(str);
        }
    }

    // This class demonstrates using Delegates, including using the Remove and
    // Combine methods to create and modify delegate combinations.
    class Test
    {
        static public void Main()
        {
            // Declare the HoldsStrings class and add some strings
            HoldsStrings myHoldsStrings = new HoldsStrings();
            myHoldsStrings.addstring("This");
            myHoldsStrings.addstring("is");
            myHoldsStrings.addstring("a");
            myHoldsStrings.addstring("multicast");
            myHoldsStrings.addstring("delegate");
            myHoldsStrings.addstring("example");

            // Create two delegates individually using different methods
            HoldsStrings.CheckAndPrintDelegate ConStartDel =
                new HoldsStrings.CheckAndPrintDelegate(StringFuncs.ConStart);
            HoldsStrings.CheckAndPrintDelegate VowStartDel =
                new HoldsStrings.CheckAndPrintDelegate(StringFuncs.VowelStart);

            // Demonstrate that MulticastDelegates may store only one delegate
            Delegate [] DelegateList;

            // Returns an array of all delegates stored in the linked list of the
            // MulticastDelegate. In these cases the lists will hold only one (Multicast) delegate
            DelegateList = ConStartDel.GetInvocationList();
            Console.WriteLine("ConStartDel contains " + DelegateList.Length + " delegate(s).");
            DelegateList = VowStartDel.GetInvocationList();
            Console.WriteLine("ConStartVow contains " + DelegateList.Length + " delegate(s).");

            // Determine whether the delegates are System.Multicast delegates
            // if (ConStartDel is System.MulticastDelegate && VowStartDel is System.MulticastDelegate) {
                Console.WriteLine("ConStartDel and ConStartVow are System.MulticastDelegates");
            // }

            // Run the two single delegates one after the other
            Console.WriteLine("Running ConStartDel delegate:");
            myHoldsStrings.PrintAllQualified(ConStartDel);
            Console.WriteLine("Running VowStartDel delegate:");
            myHoldsStrings.PrintAllQualified(VowStartDel);

            // Create a new, empty MulticastDelegate
            HoldsStrings.CheckAndPrintDelegate MultiDel;

            // Delegate.Combine receives an unspecified number of MulticastDelegates as parameters
            MultiDel = (HoldsStrings.CheckAndPrintDelegate) Delegate.Combine(ConStartDel, VowStartDel);

            // How many delegates is this delegate holding?
            DelegateList = MultiDel.GetInvocationList();
            Console.WriteLine("\nMulitDel contains " + DelegateList.Length + " delegates.");

            // What happens when this mulitcast delegate is passed to PrintAllQualified
            Console.WriteLine("Running the multiple delegate that combined the first two");
            myHoldsStrings.PrintAllQualified(MultiDel);

            // The Remove and Combine methods modify the multiple delegate
            MultiDel = (HoldsStrings.CheckAndPrintDelegate) Delegate.Remove(MultiDel, VowStartDel);
            MultiDel = (HoldsStrings.CheckAndPrintDelegate) Delegate.Combine(MultiDel, ConStartDel);

            // Finally, pass the combined delegates to PrintAllQualified again
            Console.WriteLine("\nRunning the multiple delegate that contains two copies of ConStartDel:");
            myHoldsStrings.PrintAllQualified(MultiDel);

            return;
        }   //end of main
    }   //end of Test


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Unterstützt in:

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft