从UI线程问题调用COM方法

从UI线程问题调用COM方法,com,asynchronous,delegates,Com,Asynchronous,Delegates,我想知道你是否能帮我解决我的COM问题。 我有一个程序,当点击按钮时调用COM方法。代码如下所示: private void Send_Click(object sender, EventArgs e) { p.Send(allChanges); } private void Publish(List<Tuple<string, DataPair>> allChanges) { var d = new SendCallback(Send); d.

我想知道你是否能帮我解决我的COM问题。 我有一个程序,当点击按钮时调用COM方法。代码如下所示:

private void Send_Click(object sender, EventArgs e)
{
    p.Send(allChanges);
}
private void Publish(List<Tuple<string, DataPair>> allChanges)
{
    var d = new SendCallback(Send);
    d.BeginInvoke(allChanges, null, null);
}
这段代码运行良好。但我有另一个程序调用相同的COM方法。代码如下所示:

private void Send_Click(object sender, EventArgs e)
{
    p.Send(allChanges);
}
private void Publish(List<Tuple<string, DataPair>> allChanges)
{
    var d = new SendCallback(Send);
    d.BeginInvoke(allChanges, null, null);
}
private void发布(列出所有更改)
{
var d=新的SendCallback(Send);
d、 BeginInvoke(所有更改,null,null);
}
正如您在这里看到的,我使用委托调用COM方法。如果我不使用委托,程序将因COM异常而崩溃

底层的Send函数是相同的


谁能给点建议吗?非常感谢。

您有COM异常详细信息吗?这是COM异常:出错模块名称:MSVCR80.dll,版本:8.0.50727.6195,时间戳:0x4DCDBF3异常代码:0xc0000005错误偏移量:0x0001500a出错进程id:0x337C这是进程中的进程外服务器吗?更多看起来像进程内,如果是,异常是发生在调用线程中,还是发生在后台线程中?进程内。异常发生在调用线程中(我使用用户控件)。在Publish函数中,如果我添加if(InvokeRequired),它总是返回false,因为它位于UI线程中。COM Send方法的确切签名是什么?(IDL)HRESULT发送([in]LPDISPATCH数据):?