博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UI线程同步
阅读量:6247 次
发布时间:2019-06-22

本文共 2032 字,大约阅读时间需要 6 分钟。

WINFORM开发中常用的UI线程同步相关代码

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading.Tasks; using System.Threading; namespace ThreadTestApp {
/// /// 线程同步测试 /// public partial class Form1 : Form {
public Form1() {
InitializeComponent(); } private void btnInvoke_Click(object sender, EventArgs e) {
//1.直接调用 OperateUI(DoSomeThing("直接调用")); //2.同步器调用 var v2 = new Task
(() => DoSomeThing("同步器调用")); v2.Start(); v2.ContinueWith((o) => { OperateUI(o.Result); }, CancellationToken.None, TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.FromCurrentSynchronizationContext()); //3.异步异常捕捉 var v3 = new Task
(() => DoSomeThing("ThrowEx")); v3.Start(); v3.ContinueWith((o) => { OperateUI(v3.Exception.InnerExceptions[0].Message); }, CancellationToken.None, TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.FromCurrentSynchronizationContext()); //4.经典UI调用 ThreadPool.QueueUserWorkItem((o) => { Classic(DoSomeThing("经典UI调用")); }); } private void Classic(string v) {
if (this.InvokeRequired) //需要找到一个调用控件 {
Action
a = new Action
(OperateUI); this.Invoke(a, new object[] { v }); } else {
OperateUI(v); } } private void OperateUI(string v) {
tabDisplay.TabPages.Add(v); lblDisplay.Text = v; MessageBox.Show(v); this.Text = v; } private string DoSomeThing(string v) {
if (v == "ThrowEx") throw new Exception("自定义异常"); else return "[" + v + "]"; } } }

转载于:https://www.cnblogs.com/Magicsky/archive/2012/03/20/2407639.html

你可能感兴趣的文章
比特人生|信仰下的欲望、疯狂与迷惘
查看>>
从CES 2017看今年智能汽车发展趋势之一:车联网有望率先实现
查看>>
VR将用于“换头术”,VR会是医疗保健的未来吗?
查看>>
中小企业跨境贸易报告:新外贸有这四大特征
查看>>
PostgreSQL远程连接配置管理/账号密码分配(解决:致命错误: 用户 "postgres" Ident 认证失败)...
查看>>
codeforces B. Pasha and String(贪心)
查看>>
小议西安软件外包产业联盟
查看>>
无人驾驶如果投入市场,可能最先出现在日本
查看>>
n个结点,不同形态的二叉树(数目+生成)
查看>>
SpringMVC解析2-ContextLoaderListener
查看>>
Hadoop 调试第一个mapreduce程序过程详细记录总结
查看>>
任务调度-java普通工程通过Timer实现
查看>>
<img>标签的src=""空字符会出现的情况
查看>>
poj2513Colored Sticks(无向图的欧拉回路)
查看>>
两家ADAS路测大战,谁将成为最终的“汽车之眼”?
查看>>
thinkphp-条件判断-SWITCH标签
查看>>
索引视图导致死锁
查看>>
swagger restful api form映射实体对象和body映射实体对象配置
查看>>
IOS启用WebApp全屏模式
查看>>
contentprovider的学习实例总结
查看>>