线程调用BeginInvoke
线程异步调用
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的更多相关文章
- C# 跨线程调用控件
在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应. 同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线程间操作无效 第一种办法:禁 ...
- 跨线程调用控件之MethodInvoker
原文:http://www.cnblogs.com/cm8448940/archive/2008/07/10/1240045.html 使用到两个控件,一个按钮button1,一个标签label1. ...
- c#中跨线程调用windows窗体控件
c#中跨线程调用windows窗体控件解决. 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍.首先来 ...
- c#中如何跨线程调用windows窗体控件
c#中如何跨线程调用windows窗体控件? 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍.首 ...
- c#中如何跨线程调用windows窗体控件?
我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍.首先来看传统方法: public partial c ...
- C#线程调用带参数的方法
在 .NET Framework 2.0 版中,要实现线程调用带参数的方法有两种办法.第一种:使用ParameterizedThreadStart.调用 System.Threading.Thread ...
- C# 跨线程调用form控件技巧及byte[]与string型相互转换
跨线程调用form控件技巧 private delegate void MethodSocket(object obj);//使用托管 ss = "OK"; this.BeginI ...
- 【转载】C# 跨线程调用控件
转自:http://www.cnblogs.com/TankXiao/p/3348292.html 感谢原作者,转载以备后用 在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停 ...
- C# 跨线程调用控件的4中方法
原文:C# 跨线程调用控件 在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应. 同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线 ...
随机推荐
- 删除EFI系统分区(ESP)后Windows无法启动,重建引导分区并修复启动的过程
@ 目录 一.开机故障描述 二.工具: 三.什么是EFI系统分区 四.如何查看EFI系统分区 五.删除后如何重建系统分区 1.建立未分配空间 2.建立ESP分区 3.按下图,ESP分区的大小200M即 ...
- rabbitMQ通过@RabbitListener和配置文件XML创建exchange及队列绑定关系
1.@RabbitListener 2.配置文件 <rabbit:fanout-exchange name="fanoutExchange" xmlns="http ...
- PTA 朋友圈 (25 分) 代码详解 (并查集)
1.题目要求: 某学校有N个学生,形成M个俱乐部.每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈.一个学生可以同时属于若干个不同的俱乐部.根据"我的朋友的朋友也是我的朋友" ...
- 「移动端」Web页面适配
一.什么是移动端适配 移动端 Web 页面,就是常说的手机 h5页面.webview页面.公众号开发的网页等. 由于手机机型较多,各个手机的屏幕尺寸不一样,所以做移动端页面,需要考虑在安卓和ios的各 ...
- WPF material UI 的使用
网站:https://github.com/vasanthmes/WPF-Dashboard-UI-Material-Design-Concept theme <Application x:Cl ...
- npm : 无法加载文件 C:\Program Files\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本。
- C# 查询所有设备的插拔事件
private void test() { //Win32_DeviceChangeEvent Win32_VolumeChangeEvent ManagementEventWatcher watc ...
- 使用C# 实现串口拨号器的SIM卡通信
参考网址:https://www.cnblogs.com/xugang/archive/2012/08/23/2652671.html 写此博客意为抛砖引玉,希望能和博客园的朋友们探讨一下关于.NET ...
- 【springboot】整合 MyBatis
转自:https://blog.csdn.net/cp026la/article/details/86493503 1. 简介: 目前,国内大部分公司都使用 MyBatis作为持久层框架.本章整合My ...
- 定时执行的任务Quartz.net