界面非常简单,有一个下载按钮,一个名为资源库的按钮,还有一个backgroundWorker1控件(ps:目的当点击下载按钮的时候不影响点击资源库按钮,意为多线程),backgroundWorker1的DoWork事件中的代码:for (int i = 30320; i < 30340; i++)
            {
                try            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-12 16:54:44
                            
                                175阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在WinForm中的多线程中,操作控件时,会报无效操作异常,解决方法是调用System.Windows.Form.Control中BeginInvoke。 代码如下: Code 1     /// <summary> 2     /// Operate WinForm Control In Theard. 3     /// <remarks>author Pe            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2008-08-16 11:58:00
                            
                                134阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            new Thread(() => { //多线程处理的任务 //调用ui进程 //Invoke(new Action(() => { BeginInvoke(new Action(() => { //改变UI控件状态 })); }).Start();比如: new Thread(() => ...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-08-22 11:23:25
                            
                                131阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            winform编程,在子线程中操作界面元素,之前有一种比较复杂 的写法,用了delegate。昨天在《C#本质论》中看到了一种比较简洁的写法,分享如下://有个label,名称是lblWeather,子线程中获取了天气信息,要显示在这个label上 private void updateWeatherInfo() {     if (lblWeather.InvokeRequired...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-06-01 16:31:45
                            
                                805阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1、当有大量数据需要计算、显示在界面或者调用sleep函数时,容易导致界面卡死,可以采用多线程加委托的方法解决using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using System.Runtime.InteropServices;            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2012-08-15 17:22:00
                            
                                440阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            理论上来说,你必须将一个方法代理放到一个需要提供对象运行的真实的线程中去,并使Invoke() 和BeginInvoke()方法中的nchronizeInvoke的。            
                
         
            
            
            
            bool restart = true;while (restart){Start(out restart);}(1):在主进程中不停的调用start.void Start(out bool restart){ bool connected = false; restart = false; string[] userInfo = null; try { //打开LoginInfoForm窗体,返回用户名密码。 userInfo = GetLoginInfo();// Splasher.GetLoginInfo(); if (userInfo == null) { loginOK = fals            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2011-07-14 16:43:00
                            
                                42阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            每一个从Control类中派生出来的WinForm类(包括Control类)都是依靠底层Windows消息和一个消息泵循环(message pump loop)来执行的。消息循环都必须有一个相对应的线程,因为发送到一个window的消息实际上只会被发送到创建该window的线程中去。其结果是,即使提供了同步(synchronization),你也无法从多线程中调用这些处理消息的方法。大多数plum            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2010-03-29 17:48:00
                            
                                58阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            1.调用外部程序            Process outProcess = new Process(); //初始化            outProcess.StartInfo.FileName = @"E:\winformSkin.zip";  //Filename为文件名 可以是exe/dll/各种            outProcess.Start(); 2....            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-12-29 15:24:07
                            
                                159阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            分析一下该异常的信息,在win32里每一个窗体都有一个窗体句柄,是该窗体在建立时系统分配的,但我们确实在UI线            
                
         
            
            
            
            通过例子编写,用winform编写的,讲解单线程与多线程使用,用于异步加载数据,界面不会卡死,数据在后台默认加载,给用户更好的体验。稍后会附加完整代码。
1、先不用线程,显示一个求和,计算过程中要停留1秒后继续计算。如果不用多线程页面就会卡死,直到计算完成后才会响应。一个button按钮,一个label 
界面:
代码如下:
  #region 不用线程情况
        private vo            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-08-26 10:09:40
                            
                                278阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            由于 Windows 窗体控件本质上不是线程安全的。因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入 一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用和死锁的情况。于是在调试器中运行应用程序时,如果创建某控件的线程之外的其他线程试图 调用该控件,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2022-02-21 17:40:50
                            
                                135阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            如何在多线程中调用winform窗体控件            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2007-12-20 16:50:00
                            
                                75阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            出自:://.cnblogs.com/Cajon/archive/2007/03/21/Multi_Thread_Win_Form.html 1. 标准WinForm控件不支持多线程访问 这一点,其实是Windows的机制。.NET 中每一个Control其实都是一个Window,使用这些Window,原则上都应该在创建这个Window的线程中。否则,会产生异常。这一点,似乎Wind...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2007-03-21 20:56:00
                            
                                51阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            需求: 一个以前的控制台程序,由于命令行方式对用户不够友好,所以加个界面调用控制台程序,但是以前的控制台输出信息就要重定向到新的界面上,要不用户不知道程序信息更不好。 在命令行下重定向本来是很容易的一件事情            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2022-02-22 16:03:50
                            
                                359阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            如何在多线程中调用winform窗体控件
下午在纠结之前来窗体的一个异步问题,在网上查到了一个自认为很不错的文章,这个转载出来,希望和大家一起交流学习。
文章如下:
由于 Windows 窗体控件本质上不是线程安全的。因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用和死锁的情况。于是在调            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                            精选
                                                        
                            2012-07-20 15:57:10
                            
                                5333阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            原文 c#中多线程访问winform控件的若干问题小结 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来解决这个问题,下面我将详细的介绍。 传统方法: 运行这段代码,我们会看到系统抛出一个异常:Cross-thread operat            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2016-09-19 14:29:00
                            
                                246阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            一、背景描述与课程介绍明人不说暗话,跟着阿笨一起玩WinForm。本次分享课程属于《C#高级编程实战技能开发宝典课程系列》中的一部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集、整理和完善此系列课程!本次分享课程给大家带来一个基于WinForm桌面应用程序开发的HTTP网络检查工具,希望对的没有接触过C/S架构开发的童鞋有一定的了解和认识吧。            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2018-10-01 19:27:00
                            
                                1588阅读
                            
                                                        
                                点赞
                            
                                                                             
                 
                
                             
         
            
            
            
            问题的产生:  我的WinForm程序中有一个用于更新主窗口的工作线程(一个消息泵循环            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2022-11-08 14:16:56
                            
                                355阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            /// /// 线程控制模块 /// private ManualResetEvent manualResetEvent = new ManualResetEvent(false); /// /// 配合使用 /// private AutoResetEvent autoResetEvent = new AutoResetEvent(true); privat            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2013-08-14 15:30:00
                            
                                190阅读
                            
                                                                                    
                                2评论