线程异步调用

Thread objThread = new Thread(new ThreadStart(delegate

            {

                Dispatcher.BeginInvoke(new Action(() =>--解决调用线程必须为 STA,因为许多 UI 组件都需要的问题

                {

                    ReportViewer rp = ReportingServiceHelper.GetReportView(reportName, null, true, true);

                    rp.RefreshReport();

                    CurrentView = ReportingServiceHelper.GetFormHost<ReportViewer>(rp);

                }));

}));

            objThread.Start();

http://blog.csdn.net/yl2isoft/article/details/11711833

http://www.cnblogs.com/nokiaguy/archive/2008/07/13/1241817.html

http://blog.csdn.net/razorluo/article/details/7814670

http://www.111cn.net/net/160/42786.htm

http://www.sufeinet.com/thread-3707-1-1.html

调用控件的BeginInvoke实现异步

/// <summary>
         /// 线程调用BeginInvoke
         /// </summary>
         private void ThreadBeginInvoke()
         {
             listBox1.Items.Add("--begin--");
             new Thread(() =>
             {
                 Thread.CurrentThread.Name = "ThreadBeginInvoke";
                 Thread.Sleep(10000);
                 string temp = "Before!";
                 listBox1.BeginInvoke(new Action(() =>
                 {
                     this.listBox1.Items.Add(temp + ":" + Thread.CurrentThread.Name);
                 }));
                 temp += "After!";
             }).Start();
             Thread.Sleep(1000);
             listBox1.Items.Add("--end--");
         }

委托实现异步

public delegate int AddOp(int x, int y);

class Program

{

static void Main(string[] args)

{

Console.WriteLine("******* 委托异步线程
两个线程“同时”工作 *********");

//显示主线程的唯一标示

Console.WriteLine("调用Main()的主线程的线程ID是:{0}.", Thread.CurrentThread.ManagedThreadId);

//将委托实例指向Add()方法

AddOp pAddOp = new AddOp(Add);

//开始委托次线程调用。委托BeginInvoke()方法返回的类型是IAsyncResult,

//包含这委托指向方法结束返回的值,同时也是EndInvoke()方法参数

IAsyncResult iftAR = pAddOp.BeginInvoke(10, 10, null, null);

Console.WriteLine(""nMain()方法中执行其他任务........"n");

int sum = pAddOp.EndInvoke(iftAR);

Console.WriteLine("10 + 10 = {0}.", sum);

Console.ReadLine();

}

//求和方法

static int Add(int x, int y)

{

//指示调用该方法的线程ID,ManagedThreadId是线程的唯一标示

Console.WriteLine("调用求和方法 Add()的线程ID是:
{0}.", Thread.CurrentThread.ManagedThreadId);

//模拟一个过程,停留5秒

Thread.Sleep(5000);

int sum = x + y;

return sum;

}

}

}

线程调用BeginInvoke的更多相关文章

  1. C# 跨线程调用控件

    在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应.  同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线程间操作无效 第一种办法:禁 ...

  2. 跨线程调用控件之MethodInvoker

    原文:http://www.cnblogs.com/cm8448940/archive/2008/07/10/1240045.html 使用到两个控件,一个按钮button1,一个标签label1. ...

  3. c#中跨线程调用windows窗体控件

    c#中跨线程调用windows窗体控件解决. 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍.首先来 ...

  4. c#中如何跨线程调用windows窗体控件

    c#中如何跨线程调用windows窗体控件?   我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍.首 ...

  5. c#中如何跨线程调用windows窗体控件?

    我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍.首先来看传统方法: public partial c ...

  6. C#线程调用带参数的方法

    在 .NET Framework 2.0 版中,要实现线程调用带参数的方法有两种办法.第一种:使用ParameterizedThreadStart.调用 System.Threading.Thread ...

  7. C# 跨线程调用form控件技巧及byte[]与string型相互转换

    跨线程调用form控件技巧 private delegate void MethodSocket(object obj);//使用托管 ss = "OK"; this.BeginI ...

  8. 【转载】C# 跨线程调用控件

    转自:http://www.cnblogs.com/TankXiao/p/3348292.html 感谢原作者,转载以备后用 在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停 ...

  9. C# 跨线程调用控件的4中方法

    原文:C# 跨线程调用控件 在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应.  同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线 ...

随机推荐

  1. 那些 22 岁毕业做Android开发的人,他们 50 岁左右时的人生轨迹是怎样的?

    本人今年35了,已经干了14年程序员,是14年不是13年,因为我是专科毕业. 一直就是普普通通的程序员,特别纯的码农,从没做过管理岗位,并且很可能以后也是如此. 现在已经上有老下有小. 曾经在某著名互 ...

  2. jdbc如何注册数据库驱动Driver的?

    1. 先看看原生jdbc执行sql的步骤 // 在程序启动的时候需要注册一次mysql驱动,必须引入 mysql-connnector-java 的包 Class.forName("com. ...

  3. Visio操作【未完】

    Visio 1.如何操作文档 新建基本框图和空白框图 单击基本框图打开后有模具 空白框图打开之后并没有形状 左下角发现有 更改纸张方向大小 自动调整大小: 如果我们选择形状进入到我们的页面,如果放到边 ...

  4. Linux进程理解与实践(五)细谈守护进程

    一. 守护进程及其特性      守护进程最重要的特性是后台运行.在这一点上DOS下的常驻内存程序TSR与之相似.其次,守护进程必须与其运行前的环境隔离开来.这些环境包括未关闭的文件描述符,控制终端, ...

  5. 从官网下载历史版本的java

    下载历史版本的java 因为一些bug需要降低java版本来尝试解决,但是好多都要收费,我就搞不明白了,官网都有免费的我要你的收费软件干嘛 首先直接搜索java,进入Oracle,或者 Java SE ...

  6. BeautifulSoup4的使用

    一.介绍 Beautiful Soup 主要是用来解析提取 HTML 和 XML 文件中的数据. 现在官网推荐使用 Beautiful Soup 4 ,已经被移植到了BS4中. 安装 Beautifu ...

  7. 题解 Time

    传送门 首先枚举最大值,两边分别求逆序对的做法是错误的,这里是来自战神的hack数据 1 2 100 99 98 3 97 96 95 94 93 92 91 显然3应该跨过最大值到左边去,所以这个做 ...

  8. ThreadPoolExecutor(线程池)的参数

    构造函数 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit u ...

  9. SpringBoot返回枚举对象中的指定属性

    枚举 package com.meeno.boot.oa.employee.enums; import com.alibaba.fastjson.annotation.JSONType; import ...

  10. 【权限管理】springboot集成security

    摘自: https://www.cnblogs.com/hhhshct/p/9726378.html https://blog.csdn.net/weixin_42849689/article/det ...