我在Com中开的线程中触发连接点事件Fire_XXXXEvent为什么程序运行时报错呢??
如果不在线程中运行触发事件就没有问题
UINT GenDataThread(LPARAM lp)
{
CSimu * psimu = (CSimu*)lp;
for (;;){
psimu->Fire_InterruptEvent();   ----报错
Sleep(400);
}
return 1;
}

解决方案 »

  1.   

    没有初始化com库加上CoInitliaze();
      

  2.   

    我vb客户端是这样写的。
    Dim WithEvents sim As COSIMULATORLib.Simu
    Private Sub Command1_Click()
      sim.Start True
    End Sub
    Private Sub Command2_Click()
      sim.Start False
    End Sub'Private Sub sim_OnInterrupt()
    ' ' sim.CaptureData pt(0)
    'End SubPrivate Sub Form_Load()
      Set sim = New COSIMULATORLib.Simu
      sim.SetInterruptFreq 10
      sim.SetInterruptDataNum 500
    End Sub
    Private Sub sim_InterruptEvent()
    '
    End Sub
      

  3.   

    我是在Com服务器触发客户端回掉函数invoke时出错的。
      

  4.   

    我是在接口类构造函数中创建了一个挂起的线程。
    InitializeCriticalSection(&m_crisection);
    DWORD dw(0);
    m_hThread = 0;
    m_hThread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)GenDataThread, this, CREATE_SUSPENDED  , &dw);x线程函数
    static UINT CSimu::GenDataThread(LPARAM lp)
    {
    CoInitliaze();
    CSimu * psimu = (CSimu*)lp;
             psimu->Fire_InterruptEvent();
    return 1;
    }
      

  5.   

    http://community.csdn.net/Expert/topic/3187/3187905.xml?temp=.9661981
      

  6.   

    for (;;){
    psimu->Fire_InterruptEvent();   ----报错  //看看psimu是否正确?
    Sleep(400);
    }