星空网 > 软件开发 > ASP.net

C#委派 timer 和线程以及GC

代码
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//小张类
    public class MrZhang
    {
        //其实买车票的悲情人物是小张
        public static void BuyTicket()
        {
            Console.WriteLine("NND,每次都让我去买票,鸡人呀!");
        }
public static void BuyMovieTicket()
        {
            Console.WriteLine("我去,自己泡妞,还要让我带电影票!");
        }
    }
//小明类
    class MrMing
    {
        //声明一个委托,其实就是个“命令”
        public delegate void BugTicketEventHandler();
public static void Main(string[] args)
        {
            //这里就是具体阐述这个命令是干什么的,本例是MrZhang.BuyTicket“小张买车票”
            BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);
//这时候委托被附上了具体的方法
            myDelegate();
            Console.ReadKey();
        }
    }
BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket); 
这是委托的声明方法, BugTicketEventHandler(委托的方法);委托的方法必须要加上,因为委托的构造函数是不为空的。
注:委托的参数和返回类型,都要和你要具体委托的方法要一致,例:
  public delegate void BugTicketEventHandler();

  public static void BuyTicket()
  {
   Console.WriteLine("NND,每次都让我去买票,鸡人呀!");
  }

 

委托链:

myDelegate += MrZhang.BuyMovieTicket;

结束!


 

委托的用途和c++的函数指针相似,但还有提高. 可以把函数做参数传递在你有好几个函数,而又事先不知道改运行那个好时,就是典型的应用例子. 比如你要实现两操作数的加减乘除那就可以定义一个委托 四个函数具体用什么操作需要用户决定, 这时就可以再定义一个以委托作为参数的函数实现什么运算就把相应的函数传进去就行了

 

事件监听函数+=委托(需要执行函数)
在System.Timers.Timer中用到

关于timer 的三种形式
//1.实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用。 
System.Windows.Forms.Timer 

// 2.提供以指定的时间间隔执行方法的机制。无法继承此类。 
System.Threading.Timer 

//3.在应用程序中生成定期事件。 
System.Timers.Timer 
下面两种应该是不同线程,无法直接使用form上面的控件
第二种的timer.dispose()结束有延迟,类似买早餐排队,当在最大早餐(线程达到)时,多次申请早餐(线程)会被记录,造成执行结束行为时,持续的资源消耗。
第三种的timer.stop()会取消申请,虽然有几个延迟,影响不大
所以,第一种不用申请线程,单线程会假死,第二和第三需要申请线程
写在最后吧。GC,垃圾回收装置 暂时不接触DLL,非冲突就用close和dispose吧,析构有可能会冲突GC,其实dispose如果不追求可能也没关系
需要注意的是在response的clear和end 第一个清理缓冲区,第二个结束js ?直接输出。
———————————————————————————————————————————————
不同线程之间的通讯
mythread = new Thread(new ThreadStart(BeginListen));
mythread.Start();
 
private void BeginListen()
        {
SetLabelEventHandler setLabelEventHandler = delegate() //匿名委托+Invoke
            {
                label1.Text = "我改变了它";
            };
            label1.Invoke(setLabelEventHandler);
}—————————————————————————————————————————————————
delegate和event
http://www.cnblogs.com/shensr/archive/2005/11/24/283653.html



原标题:C#委派 timer 和线程以及GC

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

特朗普宣布:美国与墨西哥已达成协议,加征关税计划“无限期暂停”!:https://www.ikjzd.com/articles/97475
2019年的亚马逊,如何开发高利润的细分类目产品?:https://www.ikjzd.com/articles/97477
亚马逊Prime Day2019日期泄露:从7月15日周一开始?:https://www.ikjzd.com/articles/97479
跨境快讯:亚马逊一周热点大事件盘点!:https://www.ikjzd.com/articles/97482
东南亚电商市场未来趋势详解:https://www.ikjzd.com/articles/97483
面对客户来电,外贸新手如何应对?:https://www.ikjzd.com/articles/97488
温州旧货市场有玻璃柜卖吗?:https://www.vstour.cn/a/411246.html
如何用摄影作品表现“芳草鲜美,落英缤纷”的:https://www.vstour.cn/a/411247.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流