代码如下: 
       //事件函数原型
        //typedef BRIINT32 (CALLBACK *PCallBack_EventEx)(PBRI_EVENT pEvent,BRIUINT32 dwUserData);
        //事件函数代理
        public delegate Int32 CallbackDelegate(BriSDKLib.TBriEvent_Data eventData, Int32 dwUserData);
        //代理对象
        public static CallbackDelegate callback;        //事件回调函数
        private  Int32 CallBackEventFunc(BriSDKLib.TBriEvent_Data EventData, Int32 dwUserData)
        {
           
            return 1;
        }
        //打开设备
        private void openDevice()
        {
            try
            {
                if (BriSDKLib.QNV_OpenDevice(BriSDKLib.ODT_LBRIDGE, 0, "") <= 0 || BriSDKLib.QNV_DevInfo(0, BriSDKLib.QNV_DEVINFO_GETCHANNELS) <= 0)
                {
                    this.AppendStatus("设备状态:打开设备失败。");
                    MessageBox.Show("设备状态:打开设备失败。");
                    return;
                }                for (Int16 i = 0; i < BriSDKLib.QNV_DevInfo(-1, BriSDKLib.QNV_DEVINFO_GETCHANNELS); i++)
                {
                    //绑定事件
                    callback = CallBackEventFunc;
                    int tmp = BriSDKLib.QNV_Event(i, BriSDKLib.QNV_EVENT_REGCBFUNCEX, 0, callback, null, 0);
                    BriSDKLib.QNV_CloseDevice(BriSDKLib.ODT_CC, 0);
                }            } 
            catch (Exception ex) 
            {            }
        }第一次触发事件时正常,但第二次触发事件时就抛出CrossThreadMessagingException。
请各位高手们帮忙分析下是什么地方错了。
C#异常callback