
正文
vb.net打开运行程序会卡顿,vbnet core
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
VB.NET开发的窗体程序为什么会卡?
这短时间应该是在和数据库建立连接,应该和你的系统和软件有关,与VB程序代码没多大关系的。
控件多了,电脑必然会慢,因为在 Windows 里每个控件都相当于一个窗口,有自己的句柄,系统需要维护对应的窗口消息,那么一定会卡顿,只能缓解不能消除。
可能进入了死循环,仔细检查代码有无这种情况。无用的数据一直在累积而没有及时销毁,导致内存占用越来越大,最终崩溃。要注意对象随用随清,及时 Dispose 掉或调用 GC.Collect。
不管你内容多少,还原和最小化的运行速度都和上位机本身没有关系,你看很多程序在最小化还原后很卡,要么是程序写了很多还原时触发的代码,要么是系统内存不够,把窗体移到虚拟内存(硬盘)里了。
感觉问题出在 FormShow() 启动倒计时显示窗口 这一句上。这一句应该只需要执行一次就行了。把它放在timer中,多次调用,造成假死。
相关问答
Q1: 有大佬可以解释一下这个vb的运行原理嘛?
VB内部是两种机制,对于调试的程序和编译成P代码的程序,其实是对代码进行解释执行。可以理解为运行在一个虚拟机上,解释代码并动态构造各种变量。
若代码做了大量固定类型的、非字符串变量的基本操作,则其产生的本机代码将与编译的 P-code 操作码产生最大的反差。然而,对于复杂的经济计算或生成分形图形,用本机代码有很多好处。
解释运行模式就是解释一句后就提交计算机执行一句,并不形成目标程序。速度慢,可以跨平台。
解释模式是运行一条语句,通过中间环境动态解释编译执行。速度慢,但是容易移植。因为只要更改中间环境就能是原代码在其他平台执行。比如VB在调试代码的时候,我们设置断点等调试的时候通常是采取解释模式运行。
可以使用反射机制在程序中动态定义数组。可以通过字符串拼接生成相应数字的数组名,然后使用反射机制动态定义数组。
Q2: Vb.net,多线程,新线程启动后,界面响应变慢,但可以相应,怎么解决?_百...
.net以及java等采用中间代码程序的通用的弱点,第一次运行需要编译成机器码。目前基本上没有什么好解决方法,这样做的好处是为了增加程序的移植性,能为你省调一些其他的麻烦。
可以用多线程,在子线程中更新控件,通过委托的方式通知主线程,可以有效缓解卡顿的问题。
那么你必须给“卡死”做出准确的定义。什么是卡死?30秒没有响应就是卡死?那么“没有响应”的定义又是什么?你给出这些条件以后,杀掉一个线程就不难。Abort方法,Dispose方法,都可以。
挂起线程:suspend(把线程挂起的次数加一)唤醒线程:resume(注意:注意这个属性是把线程挂起的次数减一,当次数为0 时,即唤醒。也就是说,线程挂起多少次,唤醒也需要多少次。
其实这行代码和C_RunCompleted(image, Nothing)的效果类似,但在BackgroundWorker中解决了“线程安全”的问题。你可以把多线程看成几个工人同时干活。
可以将文件等分成两部分,分别用两个private读取就是2线程。内存解决方案:不要等程序自动GC,自己手动释放不需要内存。缺陷:可能会浪费时间。
Q3: VB程序运行时很卡出现无响应,怎么办?
1、适当调整to后的值,即是交出足够的时间给系统做出反应。不过会影响到程序运行的速度。
2、DoEvents语句用的太多了,每次循环都会刷新,这跟不上计算的速度,比如说可以每100次循环执行一次DoEvents。
3、死循环。这是最常见的。循环很长,虽然没有死。检查与查找的方法:在没有响应时,按下ctrl-break(这两个按钮同时按下,break在小键盘上)。
Q4: 使用vb.net接收大量串口数据时,界面卡顿
对同一个串口的操作应该放在单个线程里,你的程序应该将串口接收和串口关闭的执行都放在一个线程里进行,这样在接收数据的间隙就可以正常执行close动作。而不会造成两个线程都在操作串口。
卡顿主要原因:控件多了,电脑必然会慢,因为在 Windows 里每个控件都相当于一个窗口,有自己的句柄,系统需要维护对应的窗口消息,那么一定会卡顿,只能缓解不能消除。
那么你必须给“卡死”做出准确的定义。什么是卡死?30秒没有响应就是卡死?那么“没有响应”的定义又是什么?你给出这些条件以后,杀掉一个线程就不难。Abort方法,Dispose方法,都可以。
可以将文件等分成两部分,分别用两个private读取就是2线程。内存解决方案:不要等程序自动GC,自己手动释放不需要内存。缺陷:可能会浪费时间。
不知道你是不是用51单片机往串口发数据,是的话那是因为51的sbuf最多存放8个字节,所以你发12个字节会分成两次发完。还有在接收的时候最好定义好通信协议,比如加一个侦头,一个侦尾,通过这两个字节的内容来接收数据。
Q5: vb.net做WINFORM程序如何运行更快?
1、比方说exe可执行文件可以在Windows上运行,却不能在Linux上面运行。操作系统本身就是一个运行平台。底层的API等可以看做类库。所有在Windows上运行的程序其实都只是对底层API直接或间接地调用,扩展了操作系统的功能而已。
2、首先,你这个数据的特点,这个速度肯定是快不起来的。
3、程序运行后,点击“TextBox数据绑定”按纽,程序就会用myDataSet中“student”中的数据来自动填充文本框。绑定到Label控件有了上面的内容做基础,再来讨论如何把数据集绑定到Label控件上就显得很简单了。
4、VB小程序+控件。因为现在大多数用户都使使用WIN系统。不少控件是WIN系统自带的,也不必全部打包。很多小软件其实可以忧化到不超过1MB.3。界面是美工做的看界面设计的。按扭窗体,那些的控件其实都可能做成自定义的样子。
5、Resource目录是针对ASP.NET WebForm程序,MapPath的方法可以直接取得资源目录。WinForm考虑他的项目移植性,你直接做安装包就好了,安装资源文件到哪个位置应该由客户自己来定。
关于vb.net打开运行程序会卡顿和vbnet core的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








