求个多线程处理的方法

问题描述

Winform窗体,窗体里边嵌套了一个网页webBrowser1,如果网站服务器正常的话,打开winform窗体就没问题,如果网站慢的话,winform就要等很久才可以显示出来(没有办法控制服务器,一会快,一会慢的)所以用了多线程ThreadPool,Winform窗体打开之后自动的创建一个线程去加载图片,这个时候Winform打开的速度就快了很多,但是问题也就来了,如果winform的web没有加载完,然后把界面关掉,然后再重新打开一个别的(还是当前窗体,只是id不一样,显示的内容也不一样)这个时候就提示,未将对象引用XXX,或者是webbrowser已释放或者什么鬼的,求解决,,,,,

解决方案

解决方案二:
前一次启动的线程未关闭?
解决方案三:
谁知道你的哪一个对象是null?如果你懒得调试改bug,那就恢复你单线程的程序呗。
解决方案四:
很显然,所有人都知道,当他调试多线程并发程序的时候,就遇到到某些之前变量声明上考虑不周的东西变为null,甚至变为“诡异的值”。如果你不觉得这个问题是“自己应该解决的工作”,那就没法子了,就别赶时髦进行并发多线程编程了。
解决方案五:
估计是你线程中访问主线程代码报错了,因为你的界面已经关闭了,这时候相关对象都被释放不存在,等你webform加载完并操作主界面的东西时,肯定就要报错了啊
解决方案六:
多线程,建议用委托处理,线程执行过程可控,比如执行完一个任务,调用回调函数
解决方案七:
为什么要启动一个线程去加载图片?WebBrowser加载网页本来就是多线程啊。你直接打开winform,然后加载相关网页不就行了
解决方案八:
引用3楼sp1234的回复:

很显然,所有人都知道,当他调试多线程并发程序的时候,就遇到到某些之前变量声明上考虑不周的东西变为null,甚至变为“诡异的值”。如果你不觉得这个问题是“自己应该解决的工作”,那就没法子了,就别赶时髦进行并发多线程编程了。

来点实际有用的大哥
解决方案九:
引用6楼daixf_csdn的回复:

为什么要启动一个线程去加载图片?WebBrowser加载网页本来就是多线程啊。你直接打开winform,然后加载相关网页不就行了

三克油
解决方案十:
也感觉WebBrowser本身就是多线程,可能描述问题的时候没描述清楚,一个WebBrowser,然后在winfrom有几个图片控件,之前没处理好WebBrowser也使用了多线程,现在修改了,然后就是几个图片控件用几异步加载,现在网速快点,没什么问题,我感觉可能出现的问题:可能是在窗体弹出之后,开始去加载网站的图片(数据库保存了一个图片的地址,所以加载的时候直接用了newImages.FroXXXX去加载)然后可能网站反应慢,但是这个进程已经存在,然后这个时候没等图片反应过来就马上关闭界面,然后马上在打开这个窗体,就比较容易出异常,百度了下说ThreadPool无法手动结束线程,感觉应该是第一次打开并关闭之后线程没有释放掉,然后又马上打开,或者什么之类的,从而出现一些错现在稍微处理了下,但是这个过程感觉自己不足的地方挺错的,从Thread到ThreadPool到Task,尤其是Task直接出现界面没有加载完,一个大的红叉GroupControl上,然后继续百度,感觉在这块很多不清楚,好像Task涉及到一些执行顺序等内容有那个哥哥姐姐在这块了解比较透彻的,可以指点下,给个网址也可以,学习下,不要像SP1234一样,扔完砖头,毛也没剩下(哈哈Sp1234得罪啊)

时间: 2024-09-12 23:45:48

求个多线程处理的方法的相关文章

Python中用于求最小值的min()方法

 这篇文章主要介绍了简单介绍Python中用于求最小值的min()方法,是Python入门中的基础知识,需要的朋友可以参考下     min()方法返回它的参数最小值:最接近负无穷大的值. 语法 以下是min()方法的语法: ? 1 min( x, y, z, .... ) 参数 x -- 这是一个数值表达式. y -- 这也是一个数值表达式. z -- 这也是一个数值表达式. 返回值 此方法返回最小的它的参数. 例子 下面的例子显示了min()方法的使用. ? 1 2 3 4 5 6 #!/u

Excel数据求差值的方法

  Excel数据求差值的方法 方法一:使用公式 1.选中C2单元格,输入"=A2-B2",然后按下回车键,可以得到第二行的结果. 计算差值"> 2.将光标放置在C2单元格的右下角,待其呈黑色实心十字形时按下鼠标左键并向下拖动,直到合适的位置释放鼠标. 3.OK,任务完成,C列中已经求出了对应A列与B列单元格数值的差. 方法二:使用函数 减法是加法的逆运算,例如,"A1-B1"也可以写成"A1+(-B1)",所以,可以在求和函数的

string-java新手求助:学到方法了,遇到一题目,已经解出,但求更多的解决方法。

问题描述 java新手求助:学到方法了,遇到一题目,已经解出,但求更多的解决方法. 新手学习,刚学到了方法,但其中但参数和方法调用其实不是很明白.跟着课本做了一道题.附上题目和我的代码.请求各方面的指点,改进我的代码也好.指出不对的也好.提供新的解题方法或代码的也好,多多益善: 题目如下: 一个五角数被定义为n(3n-1)/2,其中n=1,2,3,4,5··············所以,开始的几个数字就是1,5,12,22 编写下面的方法,返回一个五角数. public static int g

工具-急求图像3D旋转方法??

问题描述 急求图像3D旋转方法?? 求一个好用的工具或者一套好用的库进行图像的3D旋转. 尽量有点说明,不然真不知道怎么用呀.

目的轮廓检测-目的轮廓用cvcanny检测后,部分轮廓缺失,求加强边缘的方法

问题描述 目的轮廓用cvcanny检测后,部分轮廓缺失,求加强边缘的方法 目的轮廓为内圆环用cvcanny检测,阈值0,255 还是有边缘缺失,不能组成完整轮廓,谁知道怎么让边缘更好检测些吗 解决方案 OpenCV:Snake方法检测可变形体的轮廓

vc++-求VC++调用ocx 方法的 demo

问题描述 求VC++调用ocx 方法的 demo VC2010 C++ 如何调用ocx的方法 最好可以给个完整的例子 解决方案 http://blog.csdn.net/road2010/article/details/24515973 解决方案二: VC调用OCX的方法OCX调用方法网页调用ocx的方法----------------------

求好的设计方法避免多个弹出框

问题描述 求好的设计方法避免多个弹出框 画界面配置数据时,可能需要弹出框创建上级数据,在弹出框中又可能需要继续创建上级数据,请问有没有什么方法能避免这种无休止的弹出框,又能在创建过程中创建上级数据在回来? 或者哪里有可以借鉴的设计也行?拜托大家了 解决方案 qt库中有树控件没有? 左边放一个树控件表示上下级,右边放原先弹出框的内容显示当前选中节点的信息. 解决方案二: 可以有这种结构,但是切换界面之后,再回到原界面,数据保存是个问题

解决-后缀名是.rod的文件有人见过么?跪求打开不乱码方法!

问题描述 后缀名是.rod的文件有人见过么?跪求打开不乱码方法! 有没有人见过后缀名是.rod的文件?这种文件怎么打开?跪求解决方法啊!小弟这里先谢谢了! 解决方案 有3种可能格式:.ROD File Extension 据说 FileViewPro 可以打开,不知道是那种格式. 解决方案二: 据说 FileViewPro 可以打开

python求crc32值的方法_python

本文实例讲述了python求crc32值的方法.分享给大家供大家参考.具体实现方法如下: 要想求CRC值,前面要import binascii binascii.crc32(v)  求出了v的crc32值,这是一个long型,形如-1456387L,把这个值&0xffffffff得到的值形如48a213L的形式. 然后把这个值用16进制表示出来. 具体代码如下: def _crc32(self, v): """ Generates the crc32 hash of