线程调用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界面上的控件, 下面介绍几种常用的方法 阅读目录 线 ...
随机推荐
- PHP-Audit-Labs-Day2 - filter_var函数缺陷
目录 分析 示例 payload 修复建议 Day02-CTF题解 参考链接 分析 先看源码 // composer require "twig/twig" require 've ...
- 基于Java和Bytemd用120行代码实现一个桌面版Markdown编辑器
前提 某一天点开掘金的写作界面的时候,发现了内置Markdown编辑器有一个Github的图标,点进去就是一个开源的Markdown编辑器项目bytemd(https://github.com/byt ...
- Python脚本文件中使用中文
Python做图形用户界面(GUI)开发时经常要在界面上显示中文,需要做如下处理(详见[1]和[2]2.3节): 在py文件的首行写上:# -- coding:utf-8 -- 保存py文件时要存为u ...
- wait_time参数
1.未修改的 wait_timeout 的初始值是28800,单位为秒,等于8个小时 2.wait_timeout过大有弊端,其体现就是mysql里有大量的sleep进程无法及时释放,拖累系统性能 但 ...
- Required request body is missing-请求接口报错
一.问题由来 自己目前在做一个小程序的后台,已经写好了项目中的很多的接口,同时也在进行一些修改,比如添加拦截器,统一校验一个固定的参数是否正确. 在自己添加拦截器之前,这些接口都可以正常访问,可是在添 ...
- Windows提权小结
摸鱼的时候,想想内网这部分还有什么地方适合水一下,翻翻往期,开始填坑 总结一下Windows提权的部分,以后有时间再补一下Linux提权 这仍然是一篇思路总结类的随笔,具体细节内容不展开,也展开不了. ...
- 使用docker-compose部署Sentry(附Sentry数据清理)
Ubuntu下Sentry部署 Sentry作为一款常见以及使用人数较多的监控服务,在接口监控.错误捕捉.错误报警等方面是非常不错的,在此之前我也用过Prometheus监控,各有各的好处,有兴趣的同 ...
- NOIP 模拟 $19\; \rm u$
题解 \(by\;zj\varphi\) 二维差分的题目 维护两个标记,一个向下传,一个向右下传: 对于每次更新,我们可以直接更新 \((r,c)+s,(r+l,c)-s\) ; \((r,c+1)- ...
- flutter canvas圆圈转圈动画
import 'dart:math'; import 'dart:ui'; import 'package:flutter/material.dart'; void main() => runA ...
- Vue2.0 axios 读取本地json文件
参考:https://www.cnblogs.com/wdxue/p/8868982.html 1.下载插件 npm install axios --save 2.在main.js下引用axios i ...