首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#报错——(Winform) 某个线程创建的控件不能成为另一个线程创建的控件的父级

把某个控件的父级去掉或者更改,导致报这个异常 网上的解析如下:   “Windows 窗体”使用单线程单元 (STA) 模型,因为“Windows 窗体”基于本机 Win32 窗口,而 Win32 窗口从本质而言是单元线程...STA 模型意味着可以在任何线程创建窗口,但窗口一旦创建后就不能切换线程,并且对它的所有函数调用都必须在其创建线程发生。...STA 模型要求需从控件的非创建线程调用的控件的任何方法必须被封送到(在其执行)该控件的创建线程。...如果您在控件中为大量占用资源的任务使用多线程,则用户界面可以背景线程执行一个大量占用资源的计算的同时保持可响应。 用人话描述为:控件是属于主线程(UI线程),不可以跨线程修改其父级。

3.1K41

关于C#界面开发winform与SharpGL结合鼠标只OpenGLControl绘图区域显示坐标移动消息响应(c#鼠标单独某个控件的消息响应)

/11773260.html     因为很多时候我们开发画图之类的工具时,鼠标移动之类的,都只想在绘图区域内响应,左上角就是绘图区域原点(0,0),右下角是长宽,这样非常方便坐标的计算,如果鼠标移动整个...winform界面都有响应那么有时候就会为开发带来困扰了。     ...那么如何单纯的只OpenGLControl控件区域鼠标响应呢?     ...我觉得这点c#的界面开发就比MFC好太多了       c#下,我们只需要将鼠标移动到OpenGLControl控件边缘,右键属性 ? 然后右边的属性栏里点击事件 ?  ...结果测试:鼠标黑色OpenGLControl控件区域移动  右边的编辑框 不断的打印坐标,其他区域鼠标移动无反应 ?

1.6K30
您找到你想要的搜索结果了吗?
是的
没有找到

async void 导致程序崩溃

来源:https://note.guoqianfan.com/2022/04/23/dont-use-async-void/ 前言 之前都是文档里看到:除了winform的事件可以使用async void...直到这天看到了这篇博客: ASP.NET Core 中誤用 async void 竟引發了 502(Bad Gateway),说async void里出现异常时会导致程序崩溃。...對 C# 非同步程式設計有了解的朋友,看到這邊應該大致可以知道是發什麼問題了,async void 是建議應該避免使用的宣告方式,其中一個原因就是當 async void 方法發生 Exception...async void方法内部,我们仍然能够使用try catch,逻辑是正常逻辑。...因为async void执行时没有异常,自然就不会导致程序崩溃。 但是由于我们不能保证所有代码都没有异常,所以不要使用async void!

90420

C# 三个Timer

Timer 计时器是C#开发中经常用到的,但是有很多开发人员对他并不了解,今天这篇文将我们就具体讲解一下C#中的计时器。...False 时,只在到达第一次时间间隔后触发 Elapsed 事件; 是一个多线程计时器; 无法直接调用 WinForm 的控件,需要使用 委托; 主要用在 Windows 服务中。...是一个轻量级的计时器; 所有的参数全部构造函数中进行了设置; 可以设置启动时间; 不建议再 WinForm 程序中使用。...开发,且不需要定时处理IO操作和大量计算操作 System.Timers.Timer 多线程,运行在ThreadPool 主要用于WinSerice 开发,用在WinForm时需要通过委托调用窗体的控件...System.Threading.Timer 多线程,在线程池中执行,轻量级,需要通过Dispose停止,参数需构造函数中设置 不建议WinForm中使用

1.5K20

mfc wpf winform(工业用mfc还是qt)

MFC和QT是C++中常见的GUI框架,而WinForm和WPF是C#中常用的框架,不过我们一般很少叫WinForm框架,可能直接叫图形控件类库更多点.反正只是个称呼罢了,爱咋叫就咋叫.另外WinForm...为啥把这四个框架放一起来说呢,因为四者之前有类似的地方.相同语言之间的框架有相似那是毫无疑问,但实际不同语言之间的类库也有类似的地方了.C++中的MFC和C#中的WinForm有点类似,而C++中的QT....只不过这些功能在C#中用的很少.那些页面控件也不再是放资源文件中.WinForm中一切皆使用面向对象,数据逻辑处理代码与UI代码都是同一个类中,只不过C#有分部类的概念,就是说同一个类的代码可以分开在几个文件中...(event),你选中任意一个控件然后它的propterties 的event页面中选择任意一个事件点击下就会自动生成一个类,你往类中直接写要处理的事件代码就行.这实际就是把win32 API中复杂的消息机制简化为一个...应该说从符合我们思维习惯的角度来说WinForm是最容易理解的,UI页面对应的代码完全是标准C#代码.

2.1K10

Windows桌面软件开发-Winform桌面客户端开发神器

这是小白学习软件开发系列课程,旨在帮助对电脑编程感兴趣的朋友学习并熟悉C#技术。...其中基础部分已经讲解完毕,可以查看:C#入门教程(一)–.Net平台技术介绍、C#语言及开发工具 这算是学习电脑编程的第二部分,带领你一起开发电脑桌面应用程序。终于可以摆脱黑框控制台应用程序了。...这就是Winform。 ? 登录界面实现 先做一个登录功能的实现吧。对于Winform我们需要知道有个叫做控件的东西。 什么是控件?...比如在使用QQ的时候,一个图片,一个按钮都是一个控件 Winform中控件主要显示工具箱里面: ? 登陆界面控件: ? 直接拖拽工具箱的内容到窗体就可以了,此时你进行微调,拖拽出来图中效果。...实现登录逻辑 实现登陆逻辑之前,先介绍一下Winform项目所对应的文件: 打开解决方案管理器,项目文件基本如下: 对于一个窗体,前期主要对设计面板和窗体的处理代码熟悉就可以了。 ?

6.5K10

2014年国内最热门的.NET开源项目TOP25

如果知道.NET项目开源中国的git所占的比重只有5%的话,为什么这个《2014年国人开发的最热门的开源软件TOP 100》榜中.NET项目那么少就是情理之中了。   .../ Mina.NET C#   Mina.NET是.NET的轻量级高性能网络程序框架,支持TCP、UDP和串口等多种传输通道,能够帮助开发者快速地开发高伸缩性的应用程序。   ...15 葡萄城控件 / ActiveReports C#   ActiveReports是一款全球范围内应用非常广泛的报表控件,以提供.NET报表所需的全部报表设计功能领先于同类报表控件,包括对......QQ交流群:200319579   24 xiaocong_soft / CheckUpdate.Net C#   Winform开发的检查更新程序。...可用于Winform/WPF,主要功能包括更新文件、更新程序自身、下载安装包等。

1.9K70

Windows桌面程序开发

Winform、WPF、UWP WPF,即windows presentation foundation,windows呈现基础,属于.net framework3.0,是微软推出取代Winform的产品...WPF和Winform最大的区别在于WPF底层使用的DirectX,Winform底层使用的是GDI+,所以WPF的图形界面上更胜一筹 GDI+(Graphics Device Interface)图形设备接口...将现有 .NET 程序移植到 .NET Core 可能还是需要一些工作。 找工作? 您现在可能在.NET Core 中找不到太多工作。 这就是 .NET Framework 的现状。...容器化大行其道的今天,.NET Core 的模块化、轻量级以及它的灵活性使得它能很容易地部署到容器中,容器可以部署到任何平台,如 云、Linux 和 Windows 。...结论 对C++开发不熟 所以C++的方案就不考虑了 Java并不适合桌面开发,其它的语言没用过也暂不考虑 C#Winform、WPF要想操作其它程序也需要调用DLL 和 用Electron区别不大,所以还是用

10.7K10

.NET混合开发解决方案11 WebView2加载的网页中JS调用C#方法

程序中通过NuGet管理器引用集成WebView2控件 .NET混合开发解决方案8 WinForm程序中通过设置固定版本运行时的BrowserExecutableFolder属性集成WebView2控件...WebView2控件通过将对象传递到Web网页,使应用程序能够弥合web和本机应用程序(客户端程序:WinForm、WPF、WinUI、Win32)之间的鸿沟。...能够调用本机对象的方法比应用程序的web端重新编码对象的方法更快、效率更高。...如果您有一个通过AddHostObjectToScript向JavaScript公开的本机对象,则可以使用它来操作本机文件系统的文件。 下面通过一个Demo来讲解如何实现JS调用C#方法。...步骤1 定义一个主机对象,如:CustomWebView2HostObject类,类中编写方法并实现内部业务逻辑。

10.4K10

.NET混合开发解决方案12 网页JS调用C#方法访问WinForm或WPF窗体

《.NET混合开发解决方案11 网页JS调用C#方法》中介绍了JS访问C#方法的简单实现方式。...但是企业级应用软件中业务需求可能更加复杂,如JS调用C#方法之后,需要访问宿主的窗体,设置窗体(WinForm、WPF、WinUI、Win32)中的控件等。...C#接收到参数后,调用WinFrom窗体中定义的方法,将num1与num2作为参数传入,并将计算结果显示在窗体控件。 先看一下示例效果 下面详细介绍其实现步骤。...步骤1 1、Frm4JSCallWinForm窗体添加一个label,用于显示计算结果,默认值为0,且颜色为黑色。  ...窗体已经运行,说明已经实例化了,如果采用第一种方式,那么新创建的对象与正在运行的窗体对象不是同一个对象,即使访问到窗体中定义的方法也无法更新当前窗体的控件属性。所以必须采用第二种方式。

2.3K40

有小伙伴问:上位机用QT还是winformwpf好?

楔子 有小伙伴问:上位机用QT还是winform/wpf好? Qt是C++写的,跨平台的UI框架,Winform/wpf是C#写的不跨平台的Windows运行的UI框架。...优点 Qt的优点是可以跨平台运行UI界面,Linux,Windows,MacOs都可以运行。甚至于安卓系统也可以一展身手,在这个非PC端为唯一的现代化工程程式软件,QT有的优点极为明显。...Winform/wpf呢?这两个不能跨平台,但是优点是也是比较明显的,就是开发效率非常快。尤其是Windows,开发一个简单的上位机例子,可能熟手仅仅只有几分钟就搞定了。...winform/wpf则简单了很多,其托管代码的本质。对于初学者不需要理解底层,就可以开发出比较像样的项目出来。 结尾 如果想要专业级的开发个人还是推荐Qt,如果想要做出漂亮的界面吸引客户。...快速迭代开发winform/wpf还是不错的选择。

1.1K30

【从业余项目中学习2】C# 实现调用Matlab函数(Visual Studio:2008, Matlab:R2009a)

最近正在给客户做的个人项目,要求实现C#与Matlab之间的调用,即C# winform界面收集用户输入的参数,将参数传递给Matlab的算法计算,Matlab函数返回的结果显示winform界面上...网上此类的文章较多,但自己实现过程中还是有些差别,所以项目进行之前,自己写了一个测试的例子来实现C#对Matlab函数的调用。 一.  ...其次选择Setting,设置中,配置.NET Microsoft Framework,由"Default"改为"2.0",不能用默认。网上说法是否则编译出的DLL会有问题。       ...所以我并没有这样做,事实没有影响。疑惑的地方。     D. 点击"Build"编译文件(如下图所示) ?      即可在test\src路径下得到编译后的DLL文件 ?   3....执行C# winform程序,验证计算结果,确定是否执行了Matlab函数调用     1. 输入初值 ?     2. 得到结果 ? 四.  小结   由此,可实现C#对Matlab算法的调用。

2.7K70

DotNET介绍_dotnet 6

应用软件+系统软件 技术:C/S+B/S 十、 C/S Client Server:客户端服务 操作平台上有一个可执行程序文件 可执行程序:指在这个平台上的这个可执行程序文件直接能够被计算机识别(二进制产品...) 十一、 B/S Browser Server:浏览器端服务 必须依赖浏览器,而浏览器是一个C/S程序,B/S程序建立C/S程序的基础 网站:由一系列网页构成的一个站点 十二、.NET Framework...脚本文件 .exe windows系统的可执行程序文件 十八、Winform框架 (1)核心文件 Form1.cs文件:winform框架的基础文件 Program.cs文件:项目的主程序文件,Main...框架的C#代码文件 Form1.Designer.cs文件:Winform框架的图形化界面代码文件 bin文件夹:程序的调试文件夹 Debug文件夹:调试结果文件夹 (2)winform操作 双击一个对象添加这个对象的默认事件...将一个整数转换成二进制,然后最高位用来表示符号位(0表示正数,1表示负数,其余位表示数值位) 二十二、反码 正数的反码和原码一致,负数的反码位数全部取反,除最高位 二十三、补码 正数的补码和原码一致,负数的补码反码的基础末尾

1.8K30

Smobiler-.Net移动开发平台_通过VisualStudio开发移动应用_C#APP开发

类似开发WinForm的方式,使用C#开发Android和IOS的移动应用?听起来感觉不可思议,但是实际确实很强大。...介绍说明: 1、人力 只需一个.NET开发人员即可独立完成整个企业移动应用 从开发、打包、部署的整个生命周期 2、Smobiler Components Visual Studio中通过可视化设计,...如同开发传统Windows平台一样的开发方式,从工具栏拖动控件到窗体中,通过属性设计器设置属性,双击生成事件(类似开发WinForm的方式,使用C#开发Android和IOS的移动应用?...听起来感觉不可思议,但是实际确实很强大。)。 可视化的开发 一次开发,同时运行于Android和IOS两个平台。(跨平台解决方案) 热更新。...基于覆盖了移动开发中需要的所有控件,另外可以自定义开发插件,例如指纹、RFID、条码扫描等。 支持绝对和流式布局。可以满足各种界面样式要求。

2.2K20

再议Windows消息与WinForm事件

前言 2月份的时候,我之前曾经写过一篇关于Windows消息与C# WinForm事件机制的文章,名为《WinForm事件与消息》。在那篇文章中,我简单探讨了一下事件和消息。...处理消息 一般来说,使用WinForm技术进行开发,绝大部分的情况下,我们都在做上述流程的最后一件事情:给各种控件注册事件。毕竟,WinForm真的为我们封装了绝大部分的事件了。...例如,调用Run以启动当前线程的应用程序消息循环,并可以选择使其窗体可见;调用Exit或ExitThread来停止消息循环。...} 因为Application是单线程中运行的,所以Application.Run开始后,Application本身不断轮询检查消息队列,然后根据消息类型进行数据分发。...所以C#中的事件字段实质是一个函数指针列表,用来维护一些消息到达时的响应函数的地址。

18810

并发编程 ---为何要线程池化

线程的开销 线程的开销实际是非常大的,我们从空间开销和时间开销分别讨论。 线程的空间开销 线程的空间开销来自这四个部分: 线程内核对象(Thread Kernel Object)。...BackgroundWorker 是在内部使用了线程池的技术:同时,WinForm或WPF编码中,它还给工作线程和UI线程提供了交互的能力。...我们可以利用Task的异常处理机制捕获和处理任务中的异常,而不会导致整个应用程序崩溃。此外,Task还引入 CancellationToken 的概念,可用于取消任务的执行,从而更好地控制并发操作。...所以,尽管ThreadPool某些情况下仍然有其用途,但在C#编程中,使用Task替代ThreadPool已变为通用实践,推荐优先考虑使用Task来处理并发任务。...❝以上部分内容引用自 《编写高质量代码:改善C#程序的157个建议》 / 陆敏技著.一北京:机械工业出版社,2011.9

16540

一点.NET学习资源

.NET平台是微软为Windows推出的一套跨Windows平台的开发平台,它提供了一个类似Java虚拟机的托管运行环境(CLR),提供了几种运行在.NET平台上的优秀的编程语言(C#和Visual Basic...NETwindows使用非常广泛,我们安装一些游戏,往往就需要.NET框架的支持。另外微软还提供了.NET平台上开发图形界面程序的工具(WinForm和WPF)。...后来微软还推出了跨平台的.NET Core,可以运行在Linux和Mac OS。总之,.NET是一个非常庞大的平台,你想要的大部分功能,.NET都会提供。 下面列举了一点.NET平台的资源。...F# MSDN文档 C# MSDN文档 MSDN .NET文档 Github Awesome-dotnet Visual Studio 2017官方下载 .NET中文文档 《C#入门经典》

23220

有小伙伴问:上位机用QT还是winformwpf好?

楔子 群内有小伙伴问:上位机用QT还是winform/wpf好? QT是一个跨平台的开发框架,提供了丰富的GUI库和工具,可以用于开发各种类型的应用程序,包括上位机应用。...它们利用.NET平台的强大生态系统和C#编程语言,提供了丰富的第三方库和组件,适用于需要与.NET集成和充分利用其功能的项目。...Qt的优点: - 跨平台支持:Qt是一个跨平台的开发框架,可以多个操作系统运行,如Windows、macOS、Linux等,因此适用于开发跨平台的上位机应用程序。...- C#编程:使用C#语言进行开发可以提高开发效率,尤其是对于熟悉C#和.NET的开发人员。...如果只windows下运行,并且想要做出漂亮的界面吸引客户,快速迭代开发winform/wpf还是不错的选择。

40830

C#还能这么玩?“诺基亚大屏独显计算器”来咯!

C#编程开发中通常会为了程序的可视化和用户操作更加便捷,通常会用到winform用户交互界面的开发。 你可能会问了,C#不是游戏开发的嘛,怎么会用交互界面设计呢?...其实C#除了游戏开发,它和Java、C++等语言一样,能做的事情当然也有很多啦! 今天大灰狼就来使用C#做一个winform的计算器,从而实现对交互界面的简单开发。...开发winform计算器需要在开发环境的窗体应用程序中进行,并且可以.cs的设计界面中对进行计算器的简单设计布局, Visual Studio在这一点的设计十分的方便,我们可以通过设计界面的工具箱直接对界面布局...值得注意的是,winform中的每一个控件都会关联一个相关的函数,这些函数的作用就是点击该控件时可以触发的事件,该函数名称与控件的名称相同,同样可以控件的属性栏中进行设置。...之后双击该控件就可以winform界面的类中自动生成如下所示的控件函数: ?

88920

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券