C# 表单中的代码执行停止

C# 表单中的代码执行停止,c#,winforms,c#-2.0,C#,Winforms,C# 2.0,我正在编写一个应用程序,它应该与WindowsMobile6.5设备通信。插入设备后,将返回activeHandler回调。 我遇到的问题是代码执行在 lblStatus.Text = "someString"; 线路。没有引发异常,代码执行被停止,gui获得焦点。我在label属性上使用invoke方法也做了同样的尝试,得到了相同的结果。如果在该方法中调用非表单代码,则一切正常 public partial class MyClass: Form { public MyClass()

我正在编写一个应用程序,它应该与WindowsMobile6.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"});
 }

也可以尝试BeginInvoke,因为它会异步推送。

也可以尝试BeginInvoke,因为它会异步推送。

听起来它必须与线程相关,即进行回调的线程不是主GUI线程。奇怪的是调用不起作用。。。设置某种线程安全队列将回调中的数据传递回GUI线程怎么样?您能告诉我什么类型的同步变量吗?您使用什么类/库?sync是我自己的类,它使用OpenNETCF桌面通信库与设备通信。您可以发布对您无效的调用吗?可能是引发了异常,但被某个处理程序悄悄吞没了吗?听起来它一定与线程相关,也就是说,进行回调的线程不是主GUI线程。奇怪的是调用不起作用。。。设置某种线程安全队列将回调中的数据传递回GUI线程怎么样?您能告诉我什么类型的同步变量吗?您使用什么类/库?sync是我自己的类,它使用OpenNETCF桌面通信库与设备通信。您可以发布对您不起作用的调用吗?是否会引发异常,但被某个处理程序悄悄地吞没?