c# Winform Invoke 的用法
在Winform中线程更新UI线程
例如:Form中有一个DataGridView,我们使用Thread查询后,更新这个表格,如果在Thread中直接更新会报错。
Thread th = new Thread((object para) =>
{
List<GetBatAddNumberRetModels> ret = Api.Send("xxx", "xxx", para.GetString(), sendType.json).UNZIP().formatJson<List<GetBatAddNumberRetModels>>();
DataTable dt = smsTable.Clone();
foreach (var m in ret)
{
var temp = common.smsTempList.Where(k => k.id == m.smsId).FirstOrDefault();
DataRow row = dt.NewRow();
row["sms_check"] = false;
row["sms_number"] = m.nmb.GetString();
row["sms_batid"] = m.id.Int64();
row["sms_submitdate"] = m.date.ToString("yyyy-MM-dd HH:mm:ss");
row["sms_tempname"] = temp != null ? temp.name : "";
row["sms_auth"] = Enum.GetName(typeof(smsAuthedEnum), m.smsAuthed);
row["sms_expdate"] = m.smsExpDate == DateTime.MinValue ? "" : m.smsExpDate.ToString("yyyy-MM-dd HH:mm:ss");
row["sms_senddate"] = m.smsSendDate > DateTime.MinValue ? m.smsSendDate.ToString("yyyy-MM-dd HH:mm:ss") : "";
row["sms_sendstatus"] = Enum.GetName(typeof(smsSendStatusEnum), m.smsSendStauts);
row["sms_tempid"] = m.smsId;
row["sms_result"] = m.smsAuthInfo.GetString().Trim();
row["sms_smstype"] = m.smsExtType.GetString().Trim();
row["sms_smsleave"] = m.smsExtLeave.GetString().Trim();
row["sms_smsactive"] = m.smsExtActive.GetString().Trim();
dt.Rows.Add(row);
}
if (this.IsHandleCreated)
{
this.BeginInvoke(new EventHandler(delegate(Object sd, EventArgs ag)
{
DataTable tab = (DataTable)sd;
smsView.DataSource = tab;
}), new object[] { dt });
}
});
th.IsBackground = true;
th.Start(JsonConvert.SerializeObject(query));
c# Winform Invoke 的用法的更多相关文章
- C#中Invoke的用法2
在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫“打开”,单击之后按钮上的文本显示“关闭”,初学者往往 ...
- (转)C#中Invoke的用法 一
在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫“打开”,单击之后按钮上的文本显示“关闭”,初学者往往 ...
- C#中Invoke的用法()
invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和beg ...
- C#中Invoke的用法
在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫"打开",单击之后按钮上的文本显示 ...
- (@WhiteTaken)Unity中Invoke的用法
今天无意间读到大神写的代码,看到了Invoke函数,于是产生兴趣.后来才明白自己要学习的东西还有很多. 下面讲用法. Invoke是延时调用函数,在用Invoke函数之前需要引入命名空间using U ...
- C#中Invoke的用法1
invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和be ...
- [转载]C#中Invoke的用法()
invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和beg ...
- C#中Invoke的用法()-解决子线程访问主线程控件、线程安全等问题
引自https://www.cnblogs.com/lsgsanxiao/p/5523282.html invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概 ...
- C#中Invoke的用法(转)
invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和beg ...
随机推荐
- less封装样式有规律的类选择器-遁地龙卷风
1.解决的问题 .class-rule(p,2,width 20px animation-dely 0.1s);可以生成下列css样式 .p2 { animation-dely: 0.2s; widt ...
- 常用数据库:MongoDB
下载地址:https://www.mongodb.com/download-center/community 安装及配置指南:https://docs.mongodb.com/manual/insta ...
- 学习笔记-canny边缘检测
Canny边缘检测 声明:阅读本文需要了解线性代数里面的点乘(图像卷积的原理),高等数学里的二元函数的梯度,极大值定义,了解概率论里的二维高斯分布 1.canny边缘检测原理和简介 2.实现步骤 3. ...
- WPF入门之一APP.XAML
WPF运行之后,App.xaml是应用的声明起始点. 一.指定入口 通过指定Application 的StartupUri属性,指示了启动应用的时候,加载哪个窗口或网页. 最常见的就是将默认的Main ...
- Shell学习笔记(二)
if 语句 最简单的用法就是只使用 if 语句,它的语法格式为: if condition then statement(s) fi condition是判断条件,如果 condition 成立(返回 ...
- SpingBoot+Mybaits+Vue,更新学习
1.DTO 2.实体类 3.Controller层,UpdatePrize/{id}为接口 4.Service层 5.Impl实现层 之后就可以更新数据了. 6.Vue链接接口 7.请求,解析,返回值 ...
- docker简单介绍----Dockerfile命令
DockerFile的组成部署: 下面优先介绍下Dcokerfile的基础指令 一.CMD指令:容器启动时要莫热门运行的命令,如果有多个CMD指定,最后一个生效 使用方法: CMD ["ex ...
- java程序设计第二次作业
- GraphQL 01--- GraphQL 介绍及资源总结
作为一位web开发人员,在使用REST API的时候,是否遇到过这样的问题: 1.调用一个API的时候,总是会返回一些不需要的信息. 2. 对于一个资源的调用,如果想获取到更多的信息,可能需要发送多次 ...
- Nginx负载-nginx转发到Swoole服务器(nginx配置文件变更)