public Form1() {     InitializeComponent();     CheckForIllegalCrossThreadCalls = false; }       在多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,这个时候如果你想要访问窗口的控件,那么你可以将窗口构造函数中的CheckForIllegalCrossThreadCalls设置为false.这是线程就能安全的访问窗体控件了. 如果捕获了对错误线程的调用,则为 true:否则为 false…
在多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,如果需要访问窗口中的控件,可以在窗口构造函数中将CheckForIllegalCrossThreadCalls设置为 false public Form1(){    InitializeComponent();    CheckForIllegalCrossThreadCalls = false;} 也可以针对某一控件进行设置,例如: TextBox.CheckForIllegalCrossThreadCalls = false; M…
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace 多线…
多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,这时如果想要访问窗口的控件,发现无法对其控制. 这时可将窗口构造函数中的CheckForIllegalCrossThreadCalls设置为false:然后就能安全的访问窗体控件. 如果捕获了对错误线程的调用,则为 true:否则为 false. --------------------------------- System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls =…
在多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,如果需要访问窗口中的控件,可以在窗口构造函数中将CheckForIllegalCrossThreadCalls设置为 false public Form1(){    InitializeComponent();    CheckForIllegalCrossThreadCalls = false;} 也可以针对某一控件进行设置,例如: TextBox.CheckForIllegalCrossThreadCalls = false; M…
多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,这时如果想要访问窗口的控件,发现无法对其控制. 这时可将窗口构造函数中的CheckForIllegalCrossThreadCalls设置为false:然后就能安全的访问窗体控件. 如果捕获了对错误线程的调用,则为 true:否则为 false. --------------------------------- System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls =…
在上周解决“博客程序异步化改造之后遭遇的性能问题”的过程中,我们干了一件自以为很有成就感的事——在表现层(MVC与WebForms)将所有使用await的地方都加上了ConfigureAwait(false),比如下面代码: var taskCategories = GetCategoriesAsync(); model.Posts = await GetPostsAsync(model).ConfigureAwait(false); model.Paging.TotalCount = awai…
进程: 一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况. 进程要使用的类是:Process它在命名空间:System.Diagnostics; 1.静态方法Start(); 2.也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给 StartInfo属性设置一个对象,来通知它要打开的是哪个进程(绝对路径) private void button1_Click(object sender, EventArgs e) { Process.Start("ch…
进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况 进程要使用的类是:Process它在命名空间:System.Diagnostics; 静态方法Start(); Process.Start("进程名称"); 也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给StartInfo属性设置一个对象,来通知它要打开的是哪个进程 Process p = new Process(); ProcessStartInfo psi = new ProcessSt…
进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况 进程要使用的类是:Process它在命名空间:System.Diagnostics; 静态方法Start(); 点击按钮打开一个程序,例如打开谷歌浏览器 private void button1_Click(object sender, EventArgs e) { Process.Start("chrome"); } 也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给StartInfo属性设置…
进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况 进程要使用的类是:Process它在命名空间:System.Diagnostics; 静态方法Start();也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给StartInfo属性设置一个对象,来通知它要打开的是哪个进程 private void button1_Click(object sender, EventArgs e) { Process p = new Process(); ProcessS…
一.进程:需要有用Process类用法一:Process.Start("calc");(不好用)该方法弊端:有许多程序不知道它的运行名字到底是什么,如果写错了,就会出现程序崩溃错误用法二://实例化进程类Process p = new Process();//创建进程开启路径对象ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text);//进程类开启路径指向p.StartInfo = psi;//启动进程,不是立刻开启,什么时…
一.进程:需要有用Process类用法一:Process.Start("calc");该方法弊端:有许多程序不知道它的运行名字到底是什么,如果写错了,就会出现程序崩溃错误用法二://实例化进程类Process p = new Process();//创建进程开启路径对象ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text);//进程类开启路径指向p.StartInfo = psi;//启动进程,不是立刻开启,什么时候开启时由…
前言 先说明一下,本人不太做winform的项目,工作10年以来,一直奋斗在webform的舞台上,今天有机会也接触了一下winform,下面对工作中用到的BeginInvoke方法作一下说明,和大家也一起学习一下,呵呵. BeginInvoke产生的原因 首先一个winform程序运行后,会有一个主线程(UI),我们看到的页面上的元素,表单,列表框等等都运行在主线程上的,主线程一阻塞,这些东西就都点不了了,呵呵,所以,在我们运行一些耗时的功能时,通常会开启一个新的线程去干这事,这是和乎情理的,…
闲来无事研究了下Socket,想用它做个简单的聊天室模型,结果踩了个坑,整半天才出来,惭愧啊,先上完成的代码吧 服务端: public partial class Form1 : Form { public Form1() { InitializeComponent(); TextBox.CheckForIllegalCrossThreadCalls = false; } Socket socket = new Socket(AddressFamily.InterNetwork, SocketT…
1.进程复习//通过进程去打开应用程序 Process.Start("calc"); Process.Start("mspaint"); Process.Start("notepad"); Process.Start("iexplore", "http://www.baidu.com"); //通过进程去打开指定的文件 ProcessStartInfo psi = new ProcessStartInfo(…
IIS或者其他Web服务器究竟做了哪些工作,让浏览器请求一个URL地址后显示一个漂亮的网页?要想弄清这个疑问,我想我们可以自己写一个简单的web服务器. 思路: 创建socket监听浏览器请求. 连接成功,接受浏览器的请求数据. 响应浏览器的请求.(我们只响应静态文件) . 好的,思路很清晰.下面就跟着我动手一步步用代码实现. 1.创建socket监听浏览器请求. 当浏览器请求域名,DNS将域名解析为IP地址.带着缺省的端口80访问我们的服务器.所以Socket的监听,也需要绑定IP和端口. 代…
线程 多线程和异步函数 当异步线程在工作完成时如何通知调用线程 当异步线程出现异常的时候该如何处理 异步线程工作的进度如何实时的通知调用线程 如何在调用线程中取消正在工作的异步线程,并进行回滚操作 异步函数模型 异步函数编程模式,只要是使用委托对象封装的函数都可以实现该函数的异步调用.因为委托类型有BeginInvoke和EndInvoke这两个方法来支持异步调用. BeginInvoke无参数 using System; using System.Collections.Generic; us…
DBImport V3.7介绍: 1:先上图,再介绍亮点功能: 主要的升级功能为: 1:增加(Truncate Table)清表再插入功能: 清掉再插,可以保证两个库的数据一致,自己很喜欢这个功能. 2:信息栏增加红色部分: 黑色的信息太多,有时候错误信息被淹陌,分拆出来单独红色块标识错误信息,清晰一些. 3:增加保存所有的配置及配置还原: 之前只保存数据库链接的配置,为了第4点,包起了所有的配置,包括表名等. 4:增加自启动参数,用于定时功能的开机启动: 自启动参数为 - true 或 - 1…
以前帮一个朋友写的“IP采集工具”! Control.CheckForIllegalCrossThreadCalls = false; 多线程,测试后还比较稳定. 500线程时候,CPU5%左右,内存50多M,1W数据需要6分多钟验证完毕. 以下是部分代码: public string Getms(string url = "https://www.baidu.com/", string proxy = null) { Stopwatch sw = new Stopwatch(); t…
winform程序中使用线程的必要性: 单线程操作在执行耗时任务时会造成界面假死,带来非常差劲的用户体验,有时候甚至会影响到正常的业务执行,使用多线程做相关操作实属不得已之举. 那么在编写程序之前必须要明白的一个点就是窗体的UI的操作只能通过UI线程来执行,其他线程如果要去执行窗体中的控件值修改或者其它[任何和窗体线程相关的操作],就会报异常,所有人都知道的.为了适应这一特性,于是就有了这样的写法: private void button1_Click(object sender, EventA…
马上放假了,好开森啊O(∩_∩)O哈哈~ ——————————————————————————————————————————————————————— 昨天逛园子,发现了一个FileSystemWatcher的东西,大概看了一下,完全可以在后台自动监控文件的变化,深深后悔以前没有发现啊,简直为我省去了一大段代码啊…… 节前工作不是很多,就尝试着用了一下,不过发现还有些问题,就是事件会重复触发,以后再解决吧.就不多罗嗦了…… 贴代码才是王道啊 using System; using System…
线程开始前: Control.CheckForIllegalCrossThreadCalls = false;…
进程: 一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况. 进程所使用的类:Process 所需命名空间:System.Diagnostics; 可以通过进行来开启计算机上现有的程序: 1.使用静态方法Start();但必须要知道进程名 2.也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给 StartInfo属性设置一个对象,来通知它要打开的是哪个进程(绝对路径) 例:点击按钮选择文件路径,并显示出来,点击第二个按钮可打开此程序 private vo…
netsh int tcp set global  ecn=disable C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe C:\TESTWindowService\myWindowsService.exe C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u C:\TESTWindowService\myWindowsService.exe 需…
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using Sys…
前面设计好了界面,现在就开始写代码了,首先定义一个串口对象.. SerialPort serialport = new SerialPort();//定义串口对象 添加串口扫描函数,扫描出来所有可用串口显示在下拉框中,同时设置接受函数 string[] ArryPort = SerialPort.GetPortNames(); comboBox1.Items.Clear(); ; i < ArryPort.Length; i++) { comboBox1.Items.Add(ArryPort[i…
.NET随记.txt放在桌面好久了,编程过程中记录些杂七杂八的东西,分享给大家希望有所帮助. goto 常用于 switch语句中 字符串相加用 StringBuilder的Append()方法性能好 str.Trim(',') 清除字符串后的“,” str.ToString("参数") 可以生成一定的格式 字符串分隔符截取:str.Split(new char[]{','}) 输出21个A的简单做法:string str=new string('A',21) 字符串转化整数:Int3…
http://stephencleary.com/projects/ /// <summary> /// /// </summary> public partial class Form2 : Form { //[ComVisible(false)] //public delegate void ParameterizedThreadStart(object objfield); /// <summary> /// /// </summary> public…
单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么做,比如: private void btnSet_Click(object sender, EventArgs e) {        Thread t = new Thread(new ParameterizedThreadStart(SetTextBoxValue));     //当然也可以用匿名委托…