Example #1
0
        public void UseMulticast()
        {
            //dlegate è immutabile
            //internamente viene crato uin nuovo delegat
            //il delegate è un tipo e
            //quindi adesso assegno al
            //multicast di tipo delegate
            //un metodo che rispetta la firma del delegate
            //e poi uso la variabile di tipo delegate
            //come se stessi usando il metodo
            //posso assegnare ad un delegate in 4 modi :
            //1 metodo anonimo delegate{espressione}
            //2 lambda
            //3 nome della funzione
            //4 espressione

            EmptyDel multicast = ToLow;

            multicast += ToUp;

            //metodo anonimo
            multicast = delegate { return(""); };
            multicast = Convert.ToString;

            //lambda expression C#6
            //(parametro) => espressione
            string mystring = "closure";

            multicast = s => mystring;//CLOSURE uso variabile dichiarata fuori
            //ATTENZIONE LA VARIABILE MYSTRING VIENE VALUTATA QUANDO VIENE USATO
            //IL DELEGATE!!!
            mystring = "closure!";//multicast stampa closure!
            Console.WriteLine(multicast("roberto"));
            int       x          = 0;
            EmptyDel1 multicast1 = Add1;

            multicast1 += Add2;
            multicast1(ref x);//ESEGUO LE FUNZIONI CHE SI SONO REGISTRATE A MULTICAST

            Console.WriteLine("RISULTATO = " + x);
            multicast -= ToUp;

            var m2 = new mydel1(Convert.ToInt32);
            var a  = m2("3");
            var b  = m2.Invoke("3");
        }
Example #2
0
        private void IconObtained(Bitmap img)
        {
            m_obtainingIcon = false;
            EmptyDel del = delegate()
            {
                pB_icon.Image      = m_tempGesture.Action.GetIcon(pB_icon.Width);
                tB_address.Enabled = true;
                //btn_obtainIcon.Enabled = true;
                btn_obtainIcon.Text = Translation.GetText("C_SearchOpenWeb_btn_getIcon");//"Get Web Icon";
                this.Cursor         = m_cursor;
            };

            if (tB_address.InvokeRequired || btn_obtainIcon.InvokeRequired || pB_icon.InvokeRequired)
            {
                this.Invoke(del);
            }
            else
            {
                del();
            }
        }