表单中的代码执行停止
Posted
技术标签:
【中文标题】表单中的代码执行停止【英文标题】:Code Execution in Form Stops 【发布时间】:2011-01-07 09:11:11 【问题描述】:我正在编写一个应该与 windows mobile 6.5 设备通信的应用程序。当设备插入时,会返回 activeHandler 回调。 我遇到的问题是代码执行停止在
lblStatus.Text = "someString";
线。没有抛出异常,代码执行刚刚停止,gui 获得焦点。我已经尝试过在 label 属性上使用 invoke 方法来产生相同的结果。如果在该方法中调用非格式代码,一切正常。
public partial class MyClass: Form
public MyClass()
ActiveHandler active = new ActiveHandler(ActiveSync_Active);
sync.addHandler(active)
private void ActiveSync_Active()
lblStatus.Text = "someString";
//Some code
编辑: 无效的调用调用
private delegate void StatusLabelChange(string str);
private void ChangeStatusLabelText(string str)
lblStatus.Text = str;
private void ActiveSync_Active()
lblStatus.Invoke(new StatusLabelChange(ChangeStatusLabelText), new object[] "asd");
【问题讨论】:
听起来它必须与线程相关,即进行回调的线程不是主 GUI 线程。奇怪的是 Invoke 不起作用...如何设置某种线程安全队列以将数据从回调传递回 GUI 线程? 你能告诉我“同步”变量是什么类型吗?你使用什么类/库? sync 是我自己的类,使用 OpenNETCF 桌面通信库 (rapi.codeplex.com) 与设备进行通信 您可以发布对您不起作用的Invoke
电话吗?
会不会是抛出了异常,却被某个处理程序默默吞下了?
【参考方案1】:
也试试 BeginInvoke,因为那会异步推送它。
【讨论】:
以上是关于表单中的代码执行停止的主要内容,如果未能解决你的问题,请参考以下文章