在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 的用法的更多相关文章

  1. C#中Invoke的用法2

    在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫“打开”,单击之后按钮上的文本显示“关闭”,初学者往往 ...

  2. (转)C#中Invoke的用法 一

    在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫“打开”,单击之后按钮上的文本显示“关闭”,初学者往往 ...

  3. C#中Invoke的用法()

    invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和beg ...

  4. C#中Invoke的用法

    在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫"打开",单击之后按钮上的文本显示 ...

  5. (@WhiteTaken)Unity中Invoke的用法

    今天无意间读到大神写的代码,看到了Invoke函数,于是产生兴趣.后来才明白自己要学习的东西还有很多. 下面讲用法. Invoke是延时调用函数,在用Invoke函数之前需要引入命名空间using U ...

  6. C#中Invoke的用法1

    invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解.  首先说下,invoke和be ...

  7. [转载]C#中Invoke的用法()

    invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和beg ...

  8. C#中Invoke的用法()-解决子线程访问主线程控件、线程安全等问题

    引自https://www.cnblogs.com/lsgsanxiao/p/5523282.html invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概 ...

  9. C#中Invoke的用法(转)

    invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和beg ...

随机推荐

  1. pysvn 相关

    sudo apt-get install python-svn sudo apt-get install svn-workbench 安装过程中如果缺少相关依赖下载好在执行这两条语句 安装好之后的界面 ...

  2. 帆软报表(finereport)使用row_number ()进行组内排序

    ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号.在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是一致的,当使用ROW_NUMBER函数时,也 ...

  3. 蓝盾杯writeup

    由于比赛时只给了内网,web题目无法复现,这里就简单写一下misc的部分题目 1.眼花了吗 (默默吐槽居然是来自实验吧的原题) 提示:当眼花的时候会显示两张图,可以想到应该是包含双图的情况 用fore ...

  4. 记一次简单的GetShell案例

    案例链接: http://202.112.51.184:8007/ 打开链接,发现分了多个页面: 挨个点击,大概清楚是上传指定格式的文件然后在搜索的时候使文件执行从而GetShell,观察发现点击每个 ...

  5. 【原创】大叔经验分享(49)hue访问hdfs报错/hue访问oozie editor页面卡住

    hue中使用hue用户(hue admin)访问hdfs报错: Cannot access: /. Note: you are a Hue admin but not a HDFS superuser ...

  6. oracle INS-13001 环境不满足最低要求

    使用windows10等系统安装oracle 11g等版本的数据库时,经常会发现开始安装时弹出[INS-13001 环境不满足最低要求]的提示,此时可以点击[是]继续安装. 也可以点击[否]结束安装, ...

  7. 概率dp的边界处理 POJ 2096

    题目地址:https://vjudge.net/problem/POJ-2096 说的是有n个bug,和s个系统.现在一个人一天能发现一个bug,它可能是任何一个系统中的,也可能会发现已经发现过的bu ...

  8. 电脑移动后WIFI连接失败解决方法

    1.现象原因 经常会发现将自己的电脑带到不同的地方后连接附近WIFI失败的现象,这是什么原因造成的了,觉得明明之前还有连过这个无线,密码都是正确的,无线连接的图标显示一个大大大的感叹号!  像下面一样 ...

  9. C# FTP下载图片转为Base64

    public string GetFtpBase64String(string FtpFilePath) { try { string sBase64String = string.Empty; Ft ...

  10. hbase读的性能优化

    任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结 ...