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

简介:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public partial class UCInfo : UserControl
{
public UCInfo()
{
InitializeComponent();
}
ManualResetEvent neverSetEvt = new ManualResetEvent( false );
delegate void InvokeDelegate();
public void SetInfo( string info)
{
lblInfo.Invoke( new InvokeDelegate(() => { lblInfo.ForeColor = Color.Green; }), null );
lblInfo.Invoke( new InvokeDelegate(() => { lblInfo.Text = info; }), null );
ThreadPool.RegisterWaitForSingleObject(neverSetEvt, (obj, bol) =>
{
if (lblInfo.IsHandleCreated)
{
lblInfo.Invoke( new InvokeDelegate(() => { lblInfo.Text = "" ; }), null );
}
}, null , 600000, true );
}
public void SetInfo( string info, Color color)
{
lblInfo.Invoke( new InvokeDelegate(() => { lblInfo.ForeColor = color; }), null );
lblInfo.Invoke( new InvokeDelegate(() => { lblInfo.Text = info; }), null );
ThreadPool.RegisterWaitForSingleObject(neverSetEvt, (obj, bol) =>
{
if (lblInfo.IsHandleCreated)
{
lblInfo.Invoke( new InvokeDelegate(() => { lblInfo.Text = "" ; }), null );
}
}, null , 600000, true );
}
}<br><br>当调试运行中突然关闭软件时,
?
1
lblInfo.Invoke(labchange);语句就出先了“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。”错误。<br>解决办法是在lblInfo.Invoke(labchange);前加一个 if (lblInfo.IsHandleCreated)判断就可以了

  




本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/p/3904076.html,如需转载请自行联系原作者

相关文章
|
8月前
|
消息中间件 存储 API
【C/C++】回调函数详解&注册窗口类&LRESULT & CALLBACK详解以及游戏中的应用
【C/C++】回调函数详解&注册窗口类&LRESULT & CALLBACK详解以及游戏中的应用
292 0
|
前端开发
如何使用Action.Invoke()触发一个Storyboard
原文:如何使用Action.Invoke()触发一个Storyboard     一般在我们的项目中,最好是将Storyboard放在前台,然后设置Storyboard的x:key值,通过我们的TryFindResource来查找到当前的Storyboard来启动Stroyboard,这样程序显得比较合理,另外在我们的下面这个例子中,我们通过命令绑定的方式来将2个Storyboard绑定到两个Button上面,当我们点击这两个Storyboard的时候,我们会启动相应的动画,首先来看一下前台设计的xaml代码。
919 0
|
XML Android开发 数据格式
startActivityForResult()和onSaveInstanceState()用法
该方法作用是:A Activity跳转到B Activity携带返回数据 MainActivity的xml布局内代码: MainActivity,class文件内部代码 package com.
1132 0
|
索引 C++ Java
UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
<p style="color:rgb(54,46,43); font-family:Arial; font-size:14px; line-height:26px"> 首先,视图控制器必须得实现协议UIAlertViewDelegate中的方法,并指定delegate为self,才能使弹出的Alert窗口响应点击事件。</p> <p style="color:rgb(54,46,43
1564 0
|
C#
C# 跨线程调用控件
原文: C# 跨线程调用控件 在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应。  同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法   阅读目录 线程间操作无效 第一种办...
1961 0
|
C#
在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
本文转载:http://blog.csdn.net/playing9c/article/details/7471918              http://blog.csdn.net/beelinkerlidejun/article/details/4772491              http://www.cnblogs.com/fish124423/archive/2012/10/16/2726543.html C#窗体的多线程一直是个难题,总是要出现奇奇怪怪的错误。
1539 0
C#通过反射移除控件eventhandler方法参考
方法一:去除事件 public static class EventExtension {     public static void RemoveEvents(this Control...
1709 0

热门文章

最新文章