c#中自定义控件控制线程时,两个控件间相互影响,怎么避免?

描述:我自己定义了一个控件组,里面一个实行按钮控制了五个线程;主界面上面并列有两个自定义控件A和B。单独点A的实行按钮或者B的实行按钮,都没有问题。如果点A的实行按钮后,A的线程组正在运行中,点击B的实行按钮,这个时候A的控件会报出:未定义实体对象的错误。 哪位大神可以指点下。

2个回答

具体错误要调试你的程序才知道。作为原则,要注意两个
(1)线程操作界面,用Control.Invoke(委托里操作界面)
(2)线程访问共享的对象或者变量,要用lock锁定再操作

既然单独运行A没问题,运行中点击B有问题,那么B按钮的线程中肯定有更改A线程对象的操作,看看里面共同用到了哪个对象,特别是B操作中设置A操作中对象可能为null的那种,不难检查出来

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#自定义控件构造函数内内启动线程导致控件添加即运行线程

如题,用C#写的自定义控件在构造函数内启动线程或Timer等循环会导致控件添加到程序即启动(程序没有运行); 需求是需要一个控件循环监视一个对象并把监视结果以颜色显示; 控件一添加即运行感觉很怪也不合理,不知如何等到程序运行再启动控件内循环?![图片说明](https://img-ask.csdn.net/upload/201901/09/1546998572_713051.png)

C# 自定义控件实现ChackBox的Checked效果

研究好久,想实现自定义属性变更后图片也随之变更。 由于是组合控件(pictureBox、lable)两个控件组成。 实现效果Checked属性发生变更true(false)显示不同的两个图片。 下面的代码只能实现点击控件发生的变化,实际上更改![图片说明](https://img-ask.csdn.net/upload/201812/06/1544066693_265192.jpg) 这里的属性不会变更图片。目前想实现图中的属性true(false)变更后图片也随之变更 ![图片说明](https://img-ask.csdn.net/upload/201812/06/1544066502_763481.png) ``` public partial class CheckedExChagedEventArgs : UserControl { public delegate void ClickEventHandler(object sender, EventArgs e); public new event ClickEventHandler Click; public CheckedExChagedEventArgs() { InitializeComponent(); } /// <summary> /// 与控件关联的文本 /// </summary> [DefaultValue("")] [DisplayName("文本内容")] [Description("属性:L_Text")] public string L_Text { get { return l_box.Text; } set { l_box.Text = value; } } [Category("重要属性")] [Description("组件是否处于选中状态")] public bool Checked { get; set; } public void ChackBox_MouseDown(object sender, MouseEventArgs e) { if (Checked) { Checked = false; p_chack.BackgroundImage = Properties.Resources.未选中; } else { Checked = true; p_chack.BackgroundImage = Properties.Resources.选中; } } private void ChackBox_Click(object sender, EventArgs e) { this.Refresh(); this.Click?.Invoke(this, e); } } ```

c#多线程处理控件问题

1.要实现label1 和label12 显示自加,两个线程同时执行。 2.目前显示刷新存在卡顿 3.怎么做到互不干扰,异步执行,类似单个线程,快速刷新界面? ``` using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace WindowsFormsApplication1 { public partial class Form1 : Form { int a2 = 0, b2 = 0,c2=0; Thread a, b; public Form1() { InitializeComponent(); a = new Thread(a4); b = new Thread(b4); } private void button2_Click(object sender, EventArgs e) { a.Start(); } private void button3_Click(object sender, EventArgs e) { b.Start(); } private void a4() { while (true) { a1(); } } private void b4() { while (true) { b1(); } } private delegate void ThreadDelegate(); private void a1() { if (label1.InvokeRequired) { ThreadDelegate a3 = new ThreadDelegate(a1); label1.Invoke(a3); } else { a2 = a2 + 1; label1.Text = Convert.ToString(a2); } } private void b1() { if (label2.InvokeRequired) { ThreadDelegate b3 = new ThreadDelegate(b1); label2.Invoke(b3); } else { b2 = b2 + 1; label2.Text = Convert.ToString(b2); } } } } ```

c#如何通过子线程控制主线程控件呢?

我主窗口有个webbrowser控件,想通过子线程点击已显示出来的网页实现填写的功能,要怎么实现呢?我直接写代码会出错; 求大神贴点代码! 我用主线程弄个按钮是可以点击的,就是子线程不行 错误信息: “System.InvalidCastException”类型的未经处理的异常在 System.Windows.Forms.dll 中发生 其他信息: 指定的转换无效。 线程代码 HtmlElement ht = webBrowser1.Document.GetElementById("J_imlis"); HtmlElementCollection ht2 = ht.GetElementsByTagName("a"); foreach (HtmlElement item in ht2) { ab++; if (ab == 1) { item.InvokeMember("click"); //执行点击 break; } }

c#windows窗体中多线程问题

我是要随机在窗体中使某个button的visible为true的,可是老是出现“线程间操作无效: 从不是创建控件“button12”的线程访问它”。我是新手,所以请各位大神尽量说得浅显一些。

c#跨线程改变控件属性

假如c是窗体里面的一个控件 为啥想要改变c的Visible属性必须要 Action act=()=>{c.Visible=false;}; c.Invoke(act); 而不能直接c.Visible 还有这个代码是什么意思啊 Action act=()=>{c.Visible=false;}; c.Invoke(act);

c# 线程间操作无效 从不是创建控件“listView1”的线程访问它

![图片说明](https://img-ask.csdn.net/upload/201912/02/1575253835_918613.jpg) private void button2_Click(object sender, EventArgs e) { Lrcload ld = new Lrcload(); ld.code = Encoding.Default; if (dcgb2312.Checked) ld.code = System.Text.Encoding.GetEncoding("gb2312"); if (dcutf8.Checked) ld.code = System.Text.Encoding.GetEncoding("utf-8"); ld.listview = listView1.Items; ld.reload = checkBox3.Checked; //ld.load(); Thread t = new Thread(new ThreadStart(ld.load)); t.IsBackground = true; t.Start(); } class Lrcload { /// <summary> /// 保存文件编码 /// </summary> public System.Text.Encoding code; /// <summary> /// 列表listview.Items /// </summary> // public ListViewItem[] listview; public ListView.ListViewItemCollection listview; /// <summary> /// 已有歌词重下 /// </summary> public bool reload; /// <summary> /// 下载歌词 /// </summary> public void load() { bu(false); foreach (ListViewItem lvi in listview) { try {

C#无法创建控件,要如何创建。

本来是在一个线程上创建控件的,但是会报错:在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级然后我用网上查的 Form form = new Form1(); if (form.InvokeRequired) { form.Invoke(new MethodInvoker(delegate { form.Controls.Add(Tntbreak); })); return; } form.InvokeRequired一直会判断成false,请问大佬们如何创建这个控件。

C#的winform中对于Form窗体的Timer控件问题?

最近想实现一个控制,就是winform程序向通过socket协议进行数据指令的收发,收到对应的指令启动timer的控件执行timer控件操作的内容,但是发现通过了socket之后就不再执行timer事件中的语句了,如果换做用system.timers.timer 发现使用过程不好控制。求各位大神支个招,解释下为什么?

关于C#异步多线程编写时插入新线程的问题

如题,C#环境下,遇到问题如下,**假设我现在执行的线程依次为pro1,2,3,这时候我通过窗体控件新建了线程pro4并且想让他在pro3后运行(插入PRO4时PRO3未结束)请问该如何处理?** 具体解释: 我的线程创建函数在timealgorithm()方法中,会依次创建线程 整体处于go按钮的点击触发方法中,如下代码: ```private void go_Click(object sender, EventArgs e) { ... while (judgeall(finish) == false) { timealgorithm(); } ... //here }``` 如果我在here处添加了字符回显于richtestbox控件,他会在线程开始之前立刻显示 (ps. **所以顺带求问如何监控多个重名线程状态是否结束**,我是在一个循环里创建线程,创建代码如下: ```Thread pro = new Thread(new ParameterizedThreadStart(proin[x].Threadbuild)); pro.Start(timet);``` ) 我个人由于基础是C语言,开始考虑使用死循环解决,用一个按钮结束循环,但是学习C#发现按钮触发方法中死循环会直接卡死框体,故求问解决方法

C#多线程实例化窗体控件显示异常,各位大神可否提点下解决思路?

我在mainPage_Win界面启动时创建一个线程“user_thread”, 在这个线程的方法中我通过逻辑判断实例化并打开了窗体download_Win,在打开download_Win窗体后,发现lable控件并不能显示。求解。![图片说明](https://img-ask.csdn.net/upload/202002/19/1582115707_203294.png)![图片说明](https://img-ask.csdn.net/upload/202002/19/1582115714_587704.png)![图片说明](https://img-ask.csdn.net/upload/202002/19/1582115722_289481.png)![图片说明](https://img-ask.csdn.net/upload/202002/19/1582116033_100630.png)![图片说明](https://img-ask.csdn.net/upload/202002/19/1582116046_116990.png)

C#winform中的多线程问题

做了一个雷达显示程序,窗口线程按坐标绘制目标点,有一个后台线程更新目标的坐标。 运行起来发现过一会显示线程出现拖慢的想想,有卡顿。后来我把后台线程的处理函数改成一个 只有while(true);的死循环不做任何运算,运行一段时间后还是出现卡顿现象。这是怎么回事?

100个chart控件实时绘图时,单击单个chart控件显示每个chart控件的放大曲线时总是滞后

我有100个chart控件组成的数据采集界面,一段时间要对这100个单独的chart控件进行数据绘图,单独点击某一个chart控件还能看到每一个chart控件的放大曲线图,遇到的问题就是:恰好在对100个chart控件同时进行绘图时,此时单击任何一个chart控件都会卡住,只到100个chart的绘图过程结束,单个chart的放大界面曲线才能看到,有什么办法能让这两个过程互不影响吗?线程也试了,单个放大曲线界面还是要优先的,希望点击单个chart控件时就能弹出,不需要等待后台100个绘图结束,希望可以得到大师的指点。

C# 方法执行之前让一个WPF控件显示,执行之后隐藏

C# 方法执行之前让一个WPF控件显示,执行之后隐藏,尽量不要用线程。

C#委托来调用窗体的控件

Form1类里的代码 public Class1 cla; private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show(); cla.run1(); } private void Form1_Load(object sender, EventArgs e) { cla = new Class1(this,LK); } void LK() { button1.Text = "abc"; } Form2类里的代码 public Class1 cla; void ds() { this.button1.Text = "def"; } private void button1_Click(object sender, EventArgs e) { cla = new Class1(this, ds); cla.run2(); } Class1类里的代码 public delegate void Del1(); public Del1 _del1; public Class1(Form1 f1, Del1 del) { this._del1 = del; } public delegate void Del2(); public Del2 _del2; public Class1(Form2 f2, Del2 del) { this._del2 = del; } public void run1() { Thread th = new Thread(a); th.Start(); } public void run2() { Thread th = new Thread(b); th.Start(); } public void a() { try { _del1();//不为空,可以执行 } catch (Exception e) { MessageBox.Show("a中的方法:\n"+e.ToString ()); } } public void b() { try { _del1();//问题在这,这里委托的方法为空,为什么,上面的怎么不为空? _del2(); } catch (Exception e) { MessageBox.Show("b中的方法:\n" + e.ToString()); } } 问题:在Class1 类里(有注释)。很急,求各位大神帮帮忙。 问题的要义就是在自定义的类里新起一条线程来调用窗体的控件,我是通过委托的方法执行,但在传这个方法(需要委托的方法)的参数时,在Class1的构造方法中检验是可以传进来的,但调用的时候就为空了。 再次求各位大神帮帮忙。

C# 多线程问题,各位大佬,子线程创建一个有Timer控件的窗体,但是Timer在子线程结束后就实效,求解

我想在用子线程开一个窗体,然后再这个窗体里执行计时的功能,就用了timer,同时主线程的代码继续执行,但是现在就是子线程创建的窗体打开了,但是自动计时就卡在那,等主线程结束以后,子线程的窗体也就消失了,想请问各位大佬是啥情况

求教c#多线程操作串口的方法

需求是这样的。 1.有一个UI的主线程 。里面需要调用 串口通信。往里面发送消息。 2.另一方满我需要循环去取该串口有没有新的消息发送过来。然后将发送过来的消息传递给UI的主线程。 c#新手。请教各位。该怎么实现?

在C#中使用DGV控件的时候,滚动条无效是什么原因

把DGV控件放到我的一个自定义控件里面,然后把这个控件放到我的窗口,通过非绑定的方式在DGV里面加了数据并超过控件本身的显示,但DGV的滚动条不能使用。如果在运行的时候手动调节一下DGV的列宽,滚动条又出现并可以使用了这是个什么情况? 我没有绑定数据源,后来换了绑定数据源的方式,问题依旧,我也没有使用多线程。

C# winfrom 线程内设置dataGridView值不显示

线程中绑定好datagridview数据源后 循环修改value值 设置成功了 但是不显示 强制重绘也不好使 代码就是下面最基础的 for (int i = 0; i < dataGridView1.Rows.Count; i++) { dataGridView1.Rows[i].Cells["Column7"].Value = "删除"; };

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Linux 会成为主流桌面操作系统吗?

整理 |屠敏出品 | CSDN(ID:CSDNnews)2020 年 1 月 14 日,微软正式停止了 Windows 7 系统的扩展支持,这意味着服役十年的 Windows 7,属于...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

学习总结之HTML5剑指前端(建议收藏,图文并茂)

前言学习《HTML5与CSS3权威指南》这本书很不错,学完之后我颇有感触,觉得web的世界开明了许多。这本书是需要有一定基础的web前端开发工程师。这本书主要学习HTML5和css3,看...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

新一代神器STM32CubeMonitor介绍、下载、安装和使用教程

关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang最近ST官网悄悄新上线了一款比较强大的工具:STM32CubeMonitor V1.0.0。经过我研究和使用之...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

冒泡排序动画(基于python pygame实现)

本项目效果初始截图如下 动画见本人b站投稿:https://www.bilibili.com/video/av95491382 本项目对应github地址:https://github.com/BigShuang python版本:3.6,pygame版本:1.9.3。(python版本一致应该就没什么问题) 样例gif如下 ======================= 大爽歌作,mad

Redis核心原理与应用实践

Redis核心原理与应用实践 在很多场景下都会使用Redis,但是到了深层次的时候就了解的不是那么深刻,以至于在面试的时候经常会遇到卡壳的现象,学习知识要做到系统和深入,不要把Redis想象的过于复杂,和Mysql一样,是个读取数据的软件。 有一个理解是Redis是key value缓存服务器,更多的优点在于对value的操作更加丰富。 安装 yum install redis #yum安装 b...

现代的 “Hello, World”,可不仅仅是几行代码而已

作者 |Charles R. Martin译者 | 弯月,责编 | 夕颜头图 |付费下载自视觉中国出品 | CSDN(ID:CSDNnews)新手...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

立即提问
相关内容推荐