c#跨线程访问的代码和窗体关闭退出死循环的代码
一:一段跨线程访问,给页面内的控件赋值的代码找了半天没找到,还得找了以前写的程序.
在这记下来吧 . 这是其他程序内可以跨线程访问的代码 .
if (gridControl1.InvokeRequired)
{
gridControl1.BeginInvoke(new MethodInvoker(delegate
{
gridControl1.DataSource = urlmodellist;
}));
}
else
{
gridControl1.DataSource = urlmodellist;
}
二:这个是关闭创体内的while 循环的bug ,正常情况下关闭窗体,窗体内有死循环的话,窗体关闭了,程序还在后台运行.
解决方法:
1:在窗体的FormClosing事件处理方法中,使用代码System.Environment.Exit(0)强制退出当前进程,这样一来,不管进程下是否还有线程在工作,都会一概结束。
private void frmCase2_FormClosing(object sender, FormClosingEventArgs e)
{
     System.Environment.Exit(0);
}
2:还有一个事件结束的方式. 这种方式的话如果下边程序刚开始进行中.程序等到程序运行到waitone才能关闭,比如程序刚起来,就运行了时间长的操作,只能等到这操作技术,运行到waitone 的地方,才能运行..
while (true)
{
Console.WriteLine("do some thing");
BrowerUrls();
Thread.Sleep();
string cont = SendMail.SendMsg(gridView1);
SendEmail("浏览数据", cont);
/// Thread.Sleep(_duration); //此处线程挂起比如一个小时,睡着了...... 此处要注销掉 要不下边接收不到信号了...所以导致信号机制无用.....
if (exitEvent.WaitOne(_duration)) //waitone 里边加个时间参数 如果没有信号过来,到了时间也会自动进行while循环,很好的满足当前项目的定时执行的需求
{ return; } }
以上用信号事件 顺利的解决窗体关闭,正常退出死循环的问题
c#跨线程访问的代码和窗体关闭退出死循环的代码的更多相关文章
- C# 跨线程访问UI不报错,必须使用Invoke。
		代码有时跨线程访问UI,修改按钮Enable属性不报异常.调试发现修改按钮属性的线程是Background,执行不报异常. 在窗体构造中添加 Control.CheckForIllegalCrossT ... 
- c#基础,单线程,跨线程访问和线程带参数
		using System; using System.Collections.Generic; using System.Threading; using System.Windows.Forms; ... 
- InvokeHelper,让跨线程访问/修改主界面控件不再麻烦(转)
		http://bbs.csdn.net/topics/390162519 事实上,本文内容很简单且浅显,所以取消前戏,直接开始.. 源代码:在本文最后 这里是一张动画,演示在多线程(无限循环+Thre ... 
- winform  跨线程访问问题
		一.问题描述 进行winform 开发我们在进行数据交换时避免不了使用多线程或异步方法,这样操作也将避免不了跨线程对控件进行操作(赋值.修改属性). 下面通过一个测试说明一下问题 点击一个按钮异步对t ... 
- C# 委托 / 跨线程访问UI /  线程间操作无效: 从不是创建控件“Form1”的线程访问它
		C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它 网上的代码都比较复杂,还是这个简单 见代码, 简易解决办法: 主窗体代码 using System; ... 
- ASP.NET Boilerplate 学习    AspNet Core2 浏览器缓存使用    c#基础,单线程,跨线程访问和线程带参数   wpf 禁用启用webbroswer右键菜单   EF Core 2.0使用MsSql/MySql实现DB First和Code First   ASP.NET Core部署到Windows IIS  QRCode.js:使用 JavaScript 生成
		ASP.NET Boilerplate 学习 1.在http://www.aspnetboilerplate.com/Templates 网站下载ABP模版 2.解压后打开解决方案,解决方案目录: ... 
- .NET设计篇08-线程统一取消模型和跨线程访问UI
		知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂,输出倒逼输入 内容目录 一.线程统一取消模型1.取消令牌2.可以中断的线程1.设计一个中断函数2.创建CancellationTokenSour ... 
- .NET设计篇08-线程取消模型和跨线程访问UI
		知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂,输出倒逼输入 内容目录 一.线程统一取消模型1.取消令牌2.可以中断的线程1.设计一个中断函数2.创建CancellationTokenSour ... 
- c#使用MethodInvoker解决跨线程访问控件
		功能函数测试集锦(77) C#专区(114) 版权声明:本文为博主原创文章,未经博主允许不得转载. .net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,有一种方法是禁止编译器对跨线 ... 
随机推荐
- flutter 入口文件配置路由+加载页面
			入口文件配置路由 1.路由信息 -- 加载页面 ,通常用于显示新的内容或者广告,加载完成之后进入主页面 -- 主页面 /app 2.配置页面 main.dart main.dart // main ... 
- vue 组件自定义v-model
			参考资料:vue官网在vue 中使用v-model双向绑定 <input v-model="something"> 其实是语法糖 <input :value=&q ... 
- Android 开发 CoordinatorLayout 协调者布局 与 ConstraintLayout约束布局 两者的关系
			在摸索新技术是发现CoordinatorLayout 与 ConstraintLayout 会有冲突关系,所以就研究了一下他们之间的不兼容,被影响的方面.其实某种程度上来说是CoordinatorLa ... 
- 学习excel的使用技巧复制一列文本成新列去重
			学习excel的使用技巧复制一列文本成新列去重 其实比较简单的技巧 知道了就会 不知道就比较麻烦 直接复制到一列 找到 数据选项 删除重复项 
- Hive 特殊日期获取 tips
			获取当前日期 SELECT CURRENT_DATE, CURRENT_TIMESTAMP, from_unixtime(unix_timestamp()); 上个月1号 concat(substr( ... 
- JAVA SpringBoot2 关于 JSON 数据处理,基于 ObjectMapper
			1,当今的互联网开发行业,JSON 这种数据格式越来越成为网络开发的主流,尤其是前后端分离之后,几乎百分百的数据交互方式都是采用 JSON 2,由于 SpringMVC 框架的封装性,我们日常开发中只 ... 
- springboot + schedule
			参考文章:https://blog.csdn.net/sinianliushui/article/details/78841713 参考文章: https://blog.csdn.net/hao703 ... 
- P1219 八皇后
			题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ... 
- IEEE/ACM International Conference on Advances in Social Network Analysis and Mining (ASONAM) 2014 Industry Track Call for Papers
			IEEE/ACM International Conference on Advances in Social Network Analysis and Mining (ASONAM) 2014 In ... 
- Neural Network Virtual Machine
			深度学习Stack 为什么提出NNVM? 深度学习框架现状 - “碎片化” 目前,深度学习应用框架呈现出高度的“碎片化(fragmentation)”倾向,这主要是由于下述两个原因: 1. 深度学习正 ... 
