Example #1
0
    private void MyCallback(IAsyncResult ar)
    {
        AsyncResult         aResult             = (AsyncResult)ar;
        DoSomethingDelegate doSomethingDelegate = (DoSomethingDelegate)aResult.AsyncDelegate;

        doSomethingDelegate.EndInvoke(ref confirmationNumber, ar);
    }
Example #2
0
 private void ForSelectedOrAllPointsDo(DoSomethingDelegate doFunc)
 {
     _updatingCurveEnabled = false;
     UpdateCurveAndMakeUpdateKeyframeCommands(doFunc);
     _updatingCurveEnabled = true;
     RebuildCurrentCurves();
 }
Example #3
0
    private IAsyncResult DoSomethingAsync(string someParameter)
    {
        DoSomethingDelegate doSomethingDelegate = new DoSomethingDelegate(DoSomething);
        IAsyncResult        ar = doSomethingDelegate.BeginInvoke(someParameter, ref confirmationNumber, new AsyncCallback(MyCallback), null);

        return(ar);
    }
Example #4
0
        static void Main(string[] args)
        {
            Stopwatch           watchOne = new Stopwatch();
            Stopwatch           watchTwo = new Stopwatch();
            DoSomethingDelegate taskOne  = new DoSomethingDelegate(DoSomething);

            // Using delegates
            Console.WriteLine("Delegate Method \n--------------");
            watchOne.Start();
            taskOne();
            watchOne.Stop();
            var elapsedOne = watchOne.Elapsed;

            Console.WriteLine(Math.Round(elapsedOne.TotalSeconds, 2));

            // Using direct calls
            Console.WriteLine("\nDirect Method\n--------------");
            watchTwo.Start();
            DoSomething();
            watchTwo.Stop();
            var elapsedTwo = watchTwo.Elapsed;

            Console.WriteLine(Math.Round(elapsedTwo.TotalSeconds, 2)); //truncate to 2 digits.

            Console.WriteLine("\nDelegates saved you " + Math.Round((elapsedTwo.TotalMilliseconds - elapsedOne.TotalMilliseconds), 4) + " milliseconds ");
            Console.WriteLine("Delegates saved you " + Math.Round((elapsedTwo.TotalSeconds - elapsedOne.TotalSeconds), 4) + " seconds ");
        }
Example #5
0
        static void Main(string[] args)
        {
            try
            {
                BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
                serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
                BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
                IDictionary props = new Hashtable();
                props["port"] = 8001;
                TcpChannel tcpChannel = new TcpChannel(props, clientProv, serverProv);
                ChannelServices.RegisterChannel(tcpChannel, true);
            }
            catch (RemotingException)
            {
                Console.WriteLine("The channel tcp:8001 is already existed!");
                return;
            }
            catch (System.Net.Sockets.SocketException)
            {
                Console.WriteLine("The port number:8001 is busy!");
                return;
            }
            catch (Exception)
            {
                Console.WriteLine("Error occurs when registering the channel!");
                return;
            }


            IRemote remoteObj = Activator.GetObject(
                typeof(IRemote),
                "tcp://localhost:9999/RemoteEventObj") as IRemote;
            TestClass   testClass   = new TestClass();
            EventSinker eventSinker = new EventSinker();
            //EventSinker eventSinker = Activator.GetObject(
            //        typeof(IRemote),
            //        "tcp://localhost:8001/RemoteEventSinker") as EventSinker;
            NonRemoteCallBack callBack = new NonRemoteCallBack(PrintMessage);

            eventSinker.m_callBack = callBack;
            Console.WriteLine("Event sinker hash code: " + eventSinker.GetHashCode().ToString());
            Guid id1 = Guid.NewGuid();
            Guid id2 = Guid.NewGuid();

            remoteObj.OnRemoteEvent -= new RemoteEventHandler(eventSinker.EventFired);
            remoteObj.OnRemoteEvent += new RemoteEventHandler(eventSinker.EventFired);
            remoteObj.OnRemoteEvent -= new RemoteEventHandler(eventSinker.EventFired);
            remoteObj.OnRemoteEvent += new RemoteEventHandler(eventSinker.EventFired);
            //remoteObj.SinkEvent(id1, new RemoteEventHandler(EventFired));
            //remoteObj.SinkEvent(id2, new RemoteEventHandler(EventFired));
            DoSomethingDelegate do1 = new DoSomethingDelegate(remoteObj.DoSomething);
            DoSomethingDelegate do2 = new DoSomethingDelegate(remoteObj.DoSomething);

            do1.BeginInvoke(id1, null, null);
            do2.BeginInvoke(id2, null, null);

            Console.ReadLine();
        }
Example #6
0
        public static void Test2()
        {
            var s = new SubClass();
            DoSomethingDelegate d1 = M.S;
            DoSomethingDelegate d2 = s.S;

            d1();
            d2();
        }
Example #7
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Delegate Example\nContravariance\nEduardo Isaac Ballesteros Muñoz\n");

            D someD = new D();
            DoSomethingDelegate somethingDelegate = WorkC;

            int result = somethingDelegate(someD);

            Console.WriteLine("The values is " + result);
            Console.Read();
        }
Example #8
0
        // -------------------------------------------

        public void Test_DoSomethingDelegate()
        {
            // To właściwie podobnie jak wyżej w Test_StringModifierDelegate.

            DoSomethingDelegate del = null;

            del = DoSmth1;
            del();

            del = DoSmth2;
            del();

            del = () => { Console.WriteLine("333"); };
        }
Example #9
0
        public void Test()
        {
            DoSomethingDelegate del  = null;
            DoSomethingDelegate del2 = null;

            del = DoSomethingDel;
            del();

            del = DoSomethingDel2;
            del();

            del2 = () => { Console.WriteLine("333"); };

            Console.ReadKey();
            Console.Clear();
            del();
            del2();
            Console.ReadKey();
        }
Example #10
0
        private void UpdateCurveAndMakeUpdateKeyframeCommands(DoSomethingDelegate doFunc)
        {
            var commandList = new List <ICommand>();

            foreach (var pair in getSelectedOrAllVDefinitions())
            {
                var curve = pair.Key;
                foreach (var u in pair.Value)
                {
                    var vDefinition = curve.GetV(u);
                    commandList.Add(new AddOrUpdateKeyframeCommand(u, vDefinition, curve));
                    doFunc(vDefinition);
                }
            }
            if (commandList.Any())
            {
                App.Current.UndoRedoStack.AddAndExecute(new MacroCommand("ForSelectedOrAllPointsDo", commandList));
            }
        }
Example #11
0
 private IAsyncResult DoSomethingAsync(string someParameter)
 {
     DoSomethingDelegate doSomethingDelegate = new DoSomethingDelegate(DoSomething);
     IAsyncResult ar = doSomethingDelegate.BeginInvoke(someParameter, ref confirmationNumber, new AsyncCallback(MyCallback), null);
     return ar;
 }
Example #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAsync_Click(object sender, EventArgs e)
        {
            Console.WriteLine("****************btnAsync_Click Start {0}***************", Thread.CurrentThread.ManagedThreadId);


            DoSomethingDelegate method = new DoSomethingDelegate(this.DoSomethingLong);

            IAsyncResult asyncResult = null;

            //AsyncCallback callback = t =>
            //    {
            //        Console.WriteLine(t.Equals(asyncResult));

            //        Console.WriteLine(t.AsyncState);
            //        Console.WriteLine("这里是回调函数 {0}", Thread.CurrentThread.ManagedThreadId);
            //    };

            ////callback.Invoke(IAsyncResult)

            //asyncResult = method.BeginInvoke("btnAsync_Click", callback, "假洒脱");

            //asyncResult = method.BeginInvoke("btnAsync_Click", t =>
            //    {
            //        Console.WriteLine(t.Equals(asyncResult));
            //        Console.WriteLine(t.AsyncState);
            //        Console.WriteLine("这里是回调函数 {0}", Thread.CurrentThread.ManagedThreadId);
            //    }, "假洒脱");

            //var asyncResult1 = method.BeginInvoke("btnAsync_Click", t =>
            //{
            //    Console.WriteLine(t.Equals(asyncResult));
            //    Console.WriteLine(t.AsyncState);
            //    Console.WriteLine("这里是回调函数 {0}", Thread.CurrentThread.ManagedThreadId);
            //}, "假洒脱");

            //等待异步结束后,主线程还要做事儿

            //int i = 1;
            //while (!asyncResult.IsCompleted)
            //{
            //    Console.WriteLine("*****正在计算,已完成{0}%。。。。", 10 * i++);
            //    //Thread.Sleep(100);
            //}

            //asyncResult.AsyncWaitHandle.WaitOne();//一直等待
            //asyncResult.AsyncWaitHandle.WaitOne(-1);//一直等待
            //asyncResult.AsyncWaitHandle.WaitOne(1000);//等待1000毫秒,超时就不等待了

            //method.EndInvoke(asyncResult);

            string name = "23";

            Func <int, string> func1 = i =>
            {
                DoSomethingLong("btnAsync_Click");
                return("二零一七给力");
            };

            func1.Invoke(123);
            //Func<int, string> func2 = t =>
            //{
            //    DoSomethingLong("btnAsync_Click");
            //    return "二零一七给力";
            //};
            //Func<int, string> func3 = t =>
            //{
            //    DoSomethingLong("btnAsync_Click");
            //    return "二零一七给力";
            //};
            //Func<int, string> func4 = t =>
            //{
            //    DoSomethingLong("btnAsync_Click");
            //    return "二零一七给力";
            //};
            //Func<int, string> func5 = t =>
            //{
            //    DoSomethingLong("btnAsync_Click");
            //    return "二零一七给力";
            //};
            string sResultInvoke = func1.Invoke(1);

            string remark = "";

            asyncResult = func1.BeginInvoke(DateTime.Now.Millisecond, t =>
            {
                string sResultCallback = func1.EndInvoke(t);

                Console.WriteLine(t.AsyncState);
                remark = t.AsyncState == null ? "123" : t.AsyncState.ToString();
                Console.WriteLine("这里是回调函数 {0}", Thread.CurrentThread.ManagedThreadId);
            }, "AlwaysOnline");

            string sResult = func1.EndInvoke(asyncResult);

            //method.Invoke("btnAsync_Click1");
            //method.Invoke("btnAsync_Click2");

            //method.BeginInvoke("btnAsync_Click3", null, null);
            //method.BeginInvoke("btnAsync_Click4", null, null);
            Console.WriteLine("****************btnAsync_Click   End {0}***************", Thread.CurrentThread.ManagedThreadId);
        }
 public DelegateCallbackSampaleClass(DoSomethingDelegate dsa, DoOtherThingDelegate doa)
 {
     _doOtherThing = dsa;
     _doSomething = doa;
 }
Example #14
0
        public static void Test()
        {
            DoSomethingDelegate d = M.S;

            d();
        }
 public DelegateCallbackSampaleClass(DoSomethingDelegate dsa, DoOtherThingDelegate doa)
 {
     _doOtherThing = dsa;
     _doSomething  = doa;
 }
Example #16
0
        private void button1_Click(object sender, EventArgs e)
        {
            Console.WriteLine("Button1 Start {0}", Thread.CurrentThread.ManagedThreadId);

            DoSomethingDelegate method = new DoSomethingDelegate(this.DoSomeThingLong);
            //method.Invoke("123");
            //method.Invoke("456");

            //method.BeginInvoke("123",null,null);
            //method.BeginInvoke("456",null,null);
            IAsyncResult asyncResult = null;
            //AsyncCallback callback = t =>
            //{
            //    Console.WriteLine(t.Equals(asyncResult));
            //    Console.WriteLine(t.AsyncState); //状态参数
            //    Console.WriteLine("这里是回调函数 {0}", Thread.CurrentThread.ManagedThreadId);
            //};

            ////第一个参数:委托的参数
            ////第二个参数:回调
            ////第三个参数:回调的参数
            //asyncResult = method.BeginInvoke("123", callback, "ABCDEF");


            //asyncResult = method.BeginInvoke("456", t =>
            //   {
            //       Console.WriteLine(t.Equals(asyncResult));
            //       Console.WriteLine(t.AsyncState); //状态参数
            //        Console.WriteLine("这里是回调函数 {0}", Thread.CurrentThread.ManagedThreadId);
            //   }, "Test");

            //等待异步执行结束之后,主线程还要做事
            //int i = 1;
            //while (!asyncResult.IsCompleted)//检测委托的异步调用是否结束
            //{
            //    Console.WriteLine(".....compute...{0}%", 10 * i++);
            //    Thread.Sleep(100);//存在性能损耗
            //}

            //asyncResult.AsyncWaitHandle.WaitOne(); // 一直等待
            //asyncResult.AsyncWaitHandle.WaitOne(-1); // 一直等待
            //asyncResult.AsyncWaitHandle.WaitOne(1000); // 等待1000ms,超时就不等了

            //method.EndInvoke(asyncResult);

            Func <int, string> func = t =>
            {
                DoSomeThingLong("T");
                return("2018给力");
            };

            asyncResult = func.BeginInvoke(DateTime.Now.Millisecond, t =>
            {
                string str2 = func.EndInvoke(t);
                Console.WriteLine(t.AsyncState); //状态参数
                Console.WriteLine("这里是回调函数 {0}", Thread.CurrentThread.ManagedThreadId);
            }, "AlwayOnLine");

            //string str = func.EndInvoke(asyncResult);

            Console.WriteLine("Button1 End {0}", Thread.CurrentThread.ManagedThreadId);
        }