多线程,异步委托,同步委托几种方式的区别

Code
        public delegate void DoThingsDelegate();
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //通过子线程调用方法  按钮事件可以执行
            Thread a = new Thread(new ThreadStart(DoSomeThing));
            a.IsBackground = true;
            a.Start();

            //虽然是异步委托  但是按钮根本就显示不出来
            DoThingsDelegate dothingsEvent = new DoThingsDelegate(DoSomeThing);
            IAsyncResult result = dothingsEvent.BeginInvoke(null, null);
            dothingsEvent.EndInvoke(result);

            //同步委托就更不行了
            dothingsEvent.Invoke();

            //真正的异步委托  异步调用方法,与多线程相似
            IAsyncResult result = dothingsEvent.BeginInvoke(new AsyncCallback(DoThingEnd), null);

        }
        public static void DoSomeThing()
        {
            Console.WriteLine("begin");
            Thread.Sleep(6000);
            Console.WriteLine("end");
        }
        public static void DoThingEnd(IAsyncResult result)
        {
            Console.WriteLine("end it");
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("11111");
        }

时间: 2024-09-10 22:57:55

多线程,异步委托,同步委托几种方式的区别的相关文章

SqlServer2008 数据库同步的两种方式(Sql JOB)

原文:SqlServer2008 数据库同步的两种方式(Sql JOB)   数据库同步是一种比较常用的功能.以下结合我自己的体会整理的,如果有理解不完全或者有误的地方望大牛不理赐教.下面介绍的就是数据库同步的两种方式: 1.SQL JOB的方式  sql Job的方式同步数据库就是通过SQL语句,将一个数据源中的数据同步到目标数据库中.特点是它可以灵活的通过SQL的方式进行数据库之间的同步操作.可以在制定的时间时间作为任务计划自动执行.缺点是需要写SQL来进行操作.既然是数据库之间的同步就涉及

linux下实现web数据同步的四种方式(性能比较)_Linux

实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享2.rsync +inotify实现web数据同步3.rsync+sersync更快更节约资源实现web数据同步4.unison+inotify实现web数据双向同步 ======================================= 一.nfs实现web数据共享  nfs能实现数据同步是通过NAS(网络附加存储),在服务器上共享一个文件,且服务器

SqlServer2008 数据库同步的两种方式(发布、订阅使用方法)_mssql2008

上篇中说了通过SQL JOB的方式对数据库的同步,这一节作为上一节的延续介绍通过发布订阅的方式实现数据库之间的同步操作.发布订阅份为两个步骤:1.发布.2订阅.首先在数据源数据库服务器上对需要同步的数据进行发布,然后在目标数据库服务器上对上述发布进行订阅.发布可以发布一张表的部分数据,也可以对整张表进行发布.下面分别介绍发布.订阅的过程. 1.发布.发布需要用实际的服务器名称,不能使用服务器的IP地址进行.能发布的信息包括[表].[存储过程].[用户函数]如果使用IP会有错误,如下图:    具

点评js异步加载的4种方式_javascript技巧

js异步加载的4种方式,点评开始. 方案1:$(document).ready <!DOCTYPE html> <html> <head> <script src="http://common.cnblogs.com/script/jquery.js" type="text/javascript"></script> <script type="text/javascript"&g

JQuery中阻止事件冒泡几种方式及其区别介绍

 JQuery中阻止事件冒泡方式有哪些?本文为大家准备了两种阻止事件冒泡的方式,两种方式的区别在于.return false 不仅阻止了事件往上冒泡,而且阻止了事件本身 JQuery 提供了两种方式来阻止事件冒泡.    方式一:event.stopPropagation();   代码如下: $("#div1").mousedown(function(event){  event.stopPropagation();  });    方式二:return false;  代码如下:

javascript函数命名的三种方式及区别介绍_基础知识

javascript函数命名的三种方式及区别介绍 第一 复制代码 代码如下: function fn(val1,val2) { alert(val1+val2); } fn(1,2); 第二 复制代码 代码如下: var fn=function() { alert(val1+val2); } fn(1,2); 第三 复制代码 代码如下: var fn=new Function("alert(val1+val2)"); fn(1,2);  上面三种方式逻辑上是等价的,但是还是有点小区别:

Android异步更新UI的四种方式_Android

大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,大致有4种方式,下面分别使用四种方式来更新一个TextView.1.使用Handler消息传递机制 package com.example.runonuithreadtest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.TextView;

Android异步更新UI的四种方式

大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,大致有4种方式,下面分别使用四种方式来更新一个TextView. 1.使用Handler消息传递机制 package com.example.runonuithreadtest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.TextView;

JS中创建函数的三种方式及区别_基础知识

1.函数声明 function sum1(n1,n2){ return n1+n2; }; 2.函数表达式,又叫函数字面量 var sum2=function(n1,n2){ return n1+n2; }; 两者的区别:解析器会先读取函数声明,并使其在执行任何代码之前可以访问:而函数表达式则必须等到解析器执行到它所在的代码行才会真正被解释执行. 自执行函数严格来说也叫函数表达式,它主要用于创建一个新的作用域,在此作用域内声明的变量,不会和其它作用域内的变量冲突或混淆,大多是以匿名函数方式存在,