关于winform线程问题

问题描述

小弟写了一个winform,放了一个panel,panel里面add了另外一个winform窗体,winform里面实例化了一个线程,当我要把panel里切换到另一个winform窗体时,我首先用controls.clear,将该panel清空~再add另一个窗体~但是那个线程依然在运行~~请问我该怎么去关闭这一个线程~控制panel切换的是第一个主体winform…

解决方案

解决方案二:
共享一个bool变量主线程设置它为true,工作线程轮询,发现它是true就退出。
解决方案三:
大神~请问怎么轮询~可以详细点不?
解决方案四:
工作线程函数boolbFlag=true;///线程函数privatevoidthreadFunc(){while(bFlag){Thread.Sleep(100);//dosomething}}

threadstart后,bFlag为True,循环执行线程内部逻辑。如果需要退出,则将bFlga置为False。线程正常退出。不知道LZ的工作线程怎么设计的,如果是执行完就结束,那没有办法,等着结束或者强制退Abort
解决方案五:
如果线程内部有循环,那么就弄个全局变量,控制循环是否结束。要么就强制Abort
解决方案六:
把窗体的thread设置成public,在controls.clear之前就把窗体的线程Abort掉

时间: 2024-09-20 14:23:56

关于winform线程问题的相关文章

winform线程修改界面上的显示问题

问题描述 winform程序,多线程,线程要在运行过程中修改界面上的显示.这样会造成界面很卡,我找了相关文章看了关于delegate,invoke等一些东西,但是一知半解,要懂不懂,,谁能给一个实际代码的例子点拨一下.谢谢了. 解决方案 解决方案二:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;

深入浅析WinForm 进程、线程及区别介绍_实用技巧

一.进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动. 它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体. Process 类,用来操作进程. 命名空间:using System.Diagnostics; Process.Start("calc"); //打开计算器 Process.Start("mspaint"); //打开画图 Process.Start("iexplore" , "http://www.

实时刷新时间

问题描述 我想用一个label实现显示当前时间.主要是需要他可以实时刷新,比如说每秒变一下.我用了一些方法,但是总是提示异线程操作不安全什么的.怎么办?新手.希望详细点. 解决方案 解决方案二:用windows的timer控件没这个问题,如果是其它timer,那么你需要通过委托来更新内容解决方案三:去搜winform线程访问控件,为什么不直接给你代码是希望你通过这个可以学习到winform线程访问控件的基本知识,这类操作其实蛮频繁的解决方案四:一个Timer控件,解决你的问题.解决方案五:跨线程

Winform子线程开启的窗体无法响应DragEnter事件?

问题描述 Winform子线程开启的窗体无法响应DragEnter事件? 本来是在Program.Main里面直接用Application.Run显示一个窗体,可以正常响应DragEnter事件,但是以如下方法显示该窗体的话,就无法正常响应DragEnter事件了,请问各位大神怎么破? 解决方案 好吧,我想到了另一个办法,不用子线程启动也可以关闭一个Form 解决方案二: 不要把界面放在额外的线程中运行,这是常识.天哪,你是从哪里学的C#. 解决方案三: ..囧,UI,都不是线程安全的

c#,winform,为防止界面卡死,新建线程运行耗时算法,速度骤降

问题描述 c#,winform,为防止界面卡死,新建线程运行耗时算法,速度骤降 原本单线程下3分钟,创建个线程这么做之后要35分钟,各位大哥大姐行行好,告诉我这个怎么破? //齐套分析按钮事件 private void btnQtfx_Click(object sender, EventArgs e) { qtfxStart(); //启动进度条 if (gridView1.RowCount > 0) { int[] selected = this.gridView1.GetSelectedRo

编码-C#中线程里调用winform上的控件,问题。求助。

问题描述 C#中线程里调用winform上的控件,问题.求助. 废话不多说,我直接贴代码了.程序很简单.我摘抄的网上的. 上图是个界面. 然后程序里先是一个类.如下: class ClientThread { Encoding encoding = Encoding.GetEncoding("GB2312"); private Socket client; public string data = null; private byte[] receiveBytes = new byte

在c#winform模拟四种页面置换算法时,怎么实现线程的同步,求指教

问题描述 在c#winform模拟四种页面置换算法时,怎么实现线程的同步,求指教 在模拟页面置换算法时,每种算法都可以实现,分别用了一个循环,关键问题是,要实现线程的同步,怎么做呢??? 解决方案 http://download.csdn.net/detail/skyuni/7444499 解决方案二: 还没有解决,求大神帮忙呀 解决方案三: 怎么定义线程才能让它在各个函数中都能使用....

编程-c#,winform跨线程更改ui组件,出错,求大神帮帮忙

问题描述 c#,winform跨线程更改ui组件,出错,求大神帮帮忙 以下是截图: 源码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windo

子子线程控制winform窗体控线显示无效

问题描述 子子线程控制winform窗体控线显示无效 大家好: 首先有一个线程做图像采集: imgProc_Task = new Thread(new ThreadStart(ImageProcessing)); imgproc_Task.start(); 然后,在 ImageProcessing中没采集一次图像我会调用一个方法刷新一个控件的显示: ShowlblImageCount_Invoke(intReadImageCount.ToString()); 这个方法实现为: public vo