private void MyCallback(IAsyncResult ar) { AsyncResult aResult = (AsyncResult)ar; DoSomethingDelegate doSomethingDelegate = (DoSomethingDelegate)aResult.AsyncDelegate; doSomethingDelegate.EndInvoke(ref confirmationNumber, ar); }
private void ForSelectedOrAllPointsDo(DoSomethingDelegate doFunc) { _updatingCurveEnabled = false; UpdateCurveAndMakeUpdateKeyframeCommands(doFunc); _updatingCurveEnabled = true; RebuildCurrentCurves(); }
private IAsyncResult DoSomethingAsync(string someParameter) { DoSomethingDelegate doSomethingDelegate = new DoSomethingDelegate(DoSomething); IAsyncResult ar = doSomethingDelegate.BeginInvoke(someParameter, ref confirmationNumber, new AsyncCallback(MyCallback), null); return(ar); }
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 "); }
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(); }
public static void Test2() { var s = new SubClass(); DoSomethingDelegate d1 = M.S; DoSomethingDelegate d2 = s.S; d1(); d2(); }
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(); }
// ------------------------------------------- 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"); }; }
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(); }
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)); } }
private IAsyncResult DoSomethingAsync(string someParameter) { DoSomethingDelegate doSomethingDelegate = new DoSomethingDelegate(DoSomething); IAsyncResult ar = doSomethingDelegate.BeginInvoke(someParameter, ref confirmationNumber, new AsyncCallback(MyCallback), null); return ar; }
/// <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; }
public static void Test() { DoSomethingDelegate d = M.S; d(); }
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); }