C# 委托简单例子
- public delegate double Delegate_Prod(int a,int b);
- class Class1
- {
- static double fn_Prodvalues(int val1,int val2)
- {
- return val1*val2;
- }
- static void Main(string[] args)
- {
- //Creating the Delegate Instance
- Delegate_Prod delObj = new Delegate_Prod(fn_Prodvalues);
- Console.Write("Please Enter Values");
- int v1 = Int32.Parse(Console.ReadLine());
- int v2 = Int32.Parse(Console.ReadLine());
- //use a delegate for processing
- double res = delObj(v1,v2);
- Console.WriteLine ("Result :"+res);
- Console.ReadLine();
- }
- }
- namespace ConsoleApplication
- {
- //定义代理
- delegate String Mydelegate();
- class temp
- {
- static void Main(String[] args)
- {
- //实例化代理
- Mydelegate Md = new Mydelegate(AsyncMethod);
- //实例一个回调代理
- AsyncCallback callback = new AsyncCallback(callbackMethod);
- //开始执行异步方法
- Md.BeginInvoke(callback, Md);
- Console.ReadLine();
- }
- //异步调用的方法
- static String AsyncMethod()
- {
- Console.WriteLine("异步方法正执行");
- String str = "异步调用已结束";
- return str;
- }
- //回调方法
- static void callbackMethod(IAsyncResult Ias)
- {
- Mydelegate Md = (Mydelegate)Ias.AsyncState;
- String str = Md.EndInvoke(Ias);
- Console.WriteLine(str);
- }
- }
- }
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Runtime.Remoting.Messaging;
- namespace ConsoleTest
- {
- public delegate int AddHandler(int a,int b);
- public class 加法类
- {
- public static int Add(int a, int b)
- {
- Console.WriteLine("开始计算:" + a + "+" + b);
- Thread.Sleep(); //模拟该方法运行三秒
- Console.WriteLine("计算完成!");
- return a + b;
- }
- }
- public class 同步调用
- {
- static void Main()
- {
- Console.WriteLine("===== 同步调用 SyncInvokeTest =====");
- AddHandler handler = new AddHandler(加法类.Add);
- int result = handler.Invoke(, );
- Console.WriteLine("继续做别的事情。。。");
- Console.WriteLine(result);
- Console.ReadKey();
- }
- }
- public class 异步调用
- {
- static void Main()
- {
- Console.WriteLine("===== 异步调用 AsyncInvokeTest =====");
- AddHandler handler = new AddHandler(加法类.Add);
- //IAsyncResult: 异步操作接口(interface)
- //BeginInvoke: 委托(delegate)的一个异步方法的开始
- IAsyncResult result = handler.BeginInvoke(, , null, null);
- Console.WriteLine("继续做别的事情。。。");
- //异步操作返回
- Console.WriteLine(handler.EndInvoke(result));
- Console.ReadKey();
- }
- }
- public class 异步回调
- {
- static void Main()
- {
- Console.WriteLine("===== 异步回调 AsyncInvokeTest =====");
- AddHandler handler = new AddHandler(加法类.Add);
- //异步操作接口(注意BeginInvoke方法的不同!)
- IAsyncResult result = handler.BeginInvoke(,,new AsyncCallback(回调函数),"AsycState:OK");
- Console.WriteLine("继续做别的事情。。。");
- Console.ReadKey();
- }
- static void 回调函数(IAsyncResult result)
- {
- //result 是“加法类.Add()方法”的返回值
- //AsyncResult 是IAsyncResult接口的一个实现类,引用空间:System.Runtime.Remoting.Messaging
- //AsyncDelegate 属性可以强制转换为用户定义的委托的实际类。
- AddHandler handler = (AddHandler)((AsyncResult)result).AsyncDelegate;
- Console.WriteLine(handler.EndInvoke(result));
- Console.WriteLine(result.AsyncState);
- }
- }
- }
C# 委托简单例子的更多相关文章
- 一个简单例子:贫血模型or领域模型
转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...
- C#设计模式---观察者模式简单例子
在开发过程中经常遇到一个模块中的 一个方法调用了其他模块中相关的方法 比如说在一个系统中,如果出现了错误,就调用专门进行错误处理的模块中的方法进行错误处理 而因为错误处理的操作有很多,所以将这些具体的 ...
- C#多线程简单例子讲解
C#多线程简单例子讲解 标签: 多线程c#threadobjectcallbacktimer 分类: C#(7) 转载网址:http://www.knowsky.com/540518.html .NE ...
- Hibernate4.2.4入门(一)——环境搭建和简单例子
一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- spring mvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
- 委托的例子,from C# advanced program
class BubbleSorter { static public void Sort<T>(IList<T> sortArray, Func<T, T, bool&g ...
- ko 简单例子
Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...
- mysql定时任务简单例子
mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9 如果要每30秒执行以下语句: [sql] update userinfo set endtime = now() WHE ...
随机推荐
- SpringBoot定时任务
代码做定时任务:1.开个线程,线程里面休眠去做 2.使用一些定时任务的框架去做 1.创建TimerTest类 package com.cppdy.service; import org.springf ...
- STL的基本操作指令
list :Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. assign() 给list赋值 back() 返回最后一个元素 b ...
- cf1108E2 线段树类似扫描线
/* 有点像扫描线 思路:从左到右枚举每个点,枚举到点i时,把所有以i为起点的区间的影响删去 再加上以i-1为结尾的区间的影响 */ #include<bits/stdc++.h> usi ...
- poj1155 依赖背包
/* 依赖背包 dp[i][j]表示i结点为根的树选择j个用户时的最大剩余费用 即背包容量是j,价值是最大费用 */ #include<iostream> #include<cstr ...
- bzoj 1415
莫名互测题... 这题一看就是期望dp,可是不会转移,所以考试写50分暴力走人... #include <cstdio> #include <cmath> #include & ...
- Selenium CSS定位语法
大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css的定位 ...
- spring cloud Eureka注册中心集群搭建
1.创建springcloud-eureka maven项目 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0&quo ...
- 饮冰三年-人工智能-Python-10之C#与Python的对比
1:注释 C# 中 单行注释:// 多行注释:/**/ python 中 单行注释:# 多行注释:“““内容””” 2:字符串 C#中 "" 用双引号如("我是字符串&q ...
- 饮冰三年-人工智能-linux-01通过VM虚拟机安装contes系统
先决条件:VM虚拟机的安装.contes系统的镜像文件 1:创建新的虚拟机 2:下一步,稍后安装操作系统 3:选择对应的系统 4:选择对应的路径 至此虚拟机已经创建完成(相当于买了一台新电脑) 5:编 ...
- ipmitool获取服务器信息
https://www.annhe.net/article-2987.html https://blog.csdn.net/wolovexiexiongfei/article/details/8270 ...