代码如下:
//事件函数原型
//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
//事件函数原型
//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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货