winform程序卡死分析

C #winform程序,winformLoop console.write接口No 卡死有两个简单的方法可以解决这个问题 。C#WinForm 程序假死问题单线程是这样的,最好使用环境,退出(环境 , 退出代码);完全退出程序 。

1、请教C#WinForm编程高手,如何解决多界面耗时操作界面僵死的问题应用程序 。DoEvents可以解决这个问题 。最好使用多线程 。BackGoundWorker是多线程,一般可以解决 。workernewBackgroundWorker();工人 。DoWork newDoWorkEventHandler(worker _ DoWork);工人 。RunWorkerCompleted newRunWorkerCompletedEventHandler(worker _ RunWorkerCompleted);需要两个方法 , 即privatevoidworker _ dowork(对象发送方,

2、我最近用C#做了个小 程序用来分类.msg文件,出现 卡死现象!你说的卡死现象其实就是UI卡顿了吧?因为传统的WINFORM 程序只有一个线程,所以在代码运行的时候,界面是不会动的 。如果不想这样做 , 可以做两个线程,一个负责后台计算 , 一个负责前台显示 。还有一种方法(单线程) , 就是每个文件完成后都会刷新界面,这样界面不会持续太久 。-使用多线程,注意资源竞争,合理分配cpu和内存的使用,注意释放和重用 。

3、...每一次连接四次数据库取值(sum同意星星浪漫的说法 , 建议你用sqlhelp这样的数据访问类 。然后稍微改写一下,关闭连接,就可以作为参数控制了 。最后一次调用循环时关闭连接 。另外,还可以使用多线程将UI进程和数据库访问进程分开,这样即使数据操作复杂耗时 , 也不会出现卡死这种形式 。您甚至可以在表单上放置一个进度条来提醒用户等待 。连接到数据库后,不要临时关闭连接 。直到方法结束,它会更快 。(这样,确保数据库连接只创建一次 。否则,如果多次创建而不关闭,程序就会一动不动 , 死气沉沉 。)只有在第一次连接之后,才会有到数据库的链接 。

4、C#Winform的一个问题,百思不得其解 。首先,n应该是70,因为随机数取不到最大值 。如果设置为69 , 最大值只能是68;第二,将while循环中的第二个if去掉,直接改为elsebreak;数组索引0到69,那么rnd.next (0,69)只能得到68;不好意思,第二个也一样 。随机数种子是当前时钟,但是程序运行速度很快,所以会有同一个种子用于多次计算随机数 , 得到的随机数也是一样的 。

5、C# winform 程序,UI界面锁死 。如何处理?1和2根据你的情况是没用的 。如果你说的执行是一个循环,可以添加一个line应用 。DoEvents()在循环中,这样会让UI不是卡死 , 但是加入这个会大大降低你循环执行的效率 。所以一般来说还是需要多线程的 。不要用定时器启动一个线程后天处理数据然后填在UI里 。您将上面的计时器设置为每秒执行一次无限触发器 。通常,它在子线程中运行 。

而且现在已经进入多核时代,如果软件中多线程设计的思想是必须的,否则CPU的性能无法得到充分发挥 。楼主说的方法1和2和其他回答一样,都是治标不治本 。对于多线程编程,楼主可以参考Task 。这个类库封装了线程上的另一层,这样开发者不用直接接触线程就可以实现并行操作 。用Task处理楼主的问题不用几行代码 。

6、C#WinForm 程序假死问题单线程就是这样 。如果采用多线程,这种情况是可以避免的,可以创建一个新线程 。在这种情况下,BackgroundWorker1通常就足够了 。添加DoWork函数privatevidbackgroundworker 1 _ DoWork(object sender , doworkeventargese){ backgroundworkerbackgroundworkersandrasbackgroundworker;执行(backgroundWorker,
【winform程序卡死分析】
7、C# winform 程序 卡死后自动关闭后重启怎么做 Set 程序定期重启,或者多少次完成循环重启 。重启最好不要用Application.exit() 。因为这种退出方式不够干净 。最好使用environment . exit(environment . exit代码);完全退出程序 。再次使用监控过程并重启程序 。当main 程序启动时 , 监控过程开始,并且周期性地检测监控过程的存在 。
8、 winform循环console.write界面不 卡死有两个简单的方法可以解决这个问题 。1.使用多线程,将ckbind处理放到子线程中不会影响主窗体对系统事件的响应,也不会无响应,如果有兴趣,还可以让主窗体不可用,并添加一个进度条,让人一看就知道正在进行一个很长的处理,并且程序还在运行 。2.在ckbind中,如果循环引起的事件过长,可以调用Application,DoEvent()当循环重复固定次数时;方法,以便程序响应一次系统事件 。虽然程序不动,但肯定不会无响应 , 因为系统确定程序在一定时间内无法响应系统事件,所以在这个时间到来之前响应一次也不会无响应 。

    推荐阅读