当前位置:首页 > 计算机相关 > .net专区 > 正文内容

在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。

piikee13年前 (2010-05-10).net专区186
C#窗体的多线程一直是个难题,总是要出现奇奇怪怪的错误。今天开发alexSEO软件时,出现了在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
主要出现问题代码如下:
public   void runSEO()
{
while ((urlhead = sr.ReadLine()) != null)
{
try
{
num = num + 1;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlhead + url);
request.Timeout = int.Parse(tout.Text.ToString()) * 1000;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if(labb.IsHandleCreated)
labb.Invoke(labchange);
}
catch
{
}
}
sr.Close();
if(run.IsHandleCreated)
run.Invoke(btnchange);
this.myThread.Abort();
}
当调试运行中突然关闭软件时,labb.Invoke(labchange);语句就出先了“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。”错误。想了一通出现这种情况应该有两种可能。第一种应该是界面还来不及响应Invoke,第二种是界面线程已经结束,所以响应不了。最后解决办法是在labb.Invoke(labchange);前加一个if(labb.IsHandleCreated)判断就可以了。

扫描二维码推送至手机访问。

版权声明:本文由萍客小居发布,如需转载请注明出处。

本文链接:https://www.piikee.net/596.html

分享给朋友:

相关文章

带后缀判别的文件上传asp.net程序

Default.aspx.csusing System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;usin...

Visual Studio配备供你的应用使用的图标库

操作步骤:在Visual Studio的安装目录:\Program Files\Microsoft Visual Studio 9.0\Common7\VS2008ImageLibrary\ 有个 VS2008ImageLibrary.zi...

C#的窗体(WinForm)退出杂谈

1、Winform点击退出按钮,需要确认再退出:private void MainForm_FormClosing(object sender, FormClosingEventArgs e){if (MessageBox.Show("是否...

div中英文无法自动换行的解决办法

问题:在一个设定好宽度的div中,当我们输入的中文文字长度超过了设定宽度时,会自动换到下一行。但是,如果输入的是英文字母,那么,无论你div设定宽度为多少,英文字母都是不换行直接在同一行输出,导致div的宽度远远超出设定的大小。原因:这是因...

zedgraph去掉右键菜单中的选项

在zedgraph生成的图表中,右键菜单会出现”恢复默认大小“等菜单项,这些选项可以通过如下方法去掉。方法一:没有zedgraph源文件的情况:在zedGraph控件中的ContextMenuBuilder事件中加入如下操作:private...

.net中使用webpart,数据库报错,error:26的解决办法

出错页面如下:“/”应用程序中的服务器错误。--------------------------------------------------------------------------------在与 SQL Server 建立连接...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。