|
1
4
问题是程序的启动线程。它创建COM对象,启动线程,然后 出口 . 作为清理主线程的一部分,.NET调用couninitialize(),这是COM对象的结尾。得到这个错误是预期的结果。 让主启动线程这样退出是没有意义的。现在就让它完成你自己的工作,问题解决了。 |
|
2
2
通常这是因为基础COM对象已从其包装中释放-当您通过marshal.release手动释放它或释放托管包装时,就会发生这种情况。在错误的线程上使用它只会导致对COM对象的任何调用实际发生在创建它的线程上-我以前被它刺痛过,它具有执行的线程关联性。 您似乎没有处理包装器,但我不确定动态变量会有什么影响。 您是否尝试将线程单元状态更改为MTA? |
|
|
3
1
抱歉,可能没有直接回答你的问题。这只是用不同方式处理它的建议。希望它有帮助。 对于COM与Excel的互操作,有很多陷阱——我认为这与COM没有直接关系,而是与Excel COM的实现方式有关。 我在COM与Excel(以及MSProject)的互操作方面遇到了很多困难。对于Excel,唯一好的解决方案是一个专用线程,用于处理从创建到终止的整个Excel通信。ExcelAPI中存在一些设计缺陷。有些方法调用不是无状态的,这意味着两个线程将很难让这些东西工作。将所有通信委托给一个线程并自己处理与其他线程的通信会更安全。 除此之外,用于通信的线程还必须具有en/US文化( LCID issues )这通常会导致另一条消息:
但可能对你有用。 |
|
|
4
1
尝试使DispatcherObject的Mycom类继承。启动另一个线程后,请执行_mycom.dispatcher.run()。当您想与COM对象对话时,只需执行mycom.dispatcher.begininvoke/invoke。 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |
|
|
Barta · WPF MVVM不更新视图 1 年前 |
|
|
Denis Ivanov · WPF控件在属性更改时不会更新 1 年前 |
|
|
codymanix · WPF:TextBlock周围可见小边框? 1 年前 |
|
|
Nostromo · 来自背景对象的工具提示 1 年前 |
|
|
Nuvolari · 从可观测集合添加/删除时出现对象处理异常 2 年前 |
|
|
CCarter · 只能在设计器中DependencyObject的DependencyProperty上设置显示“Binding”的WPF ICommand DependencyProperties[重复] 2 年前 |
|
|
Thern · 在UI线程(WPF)上的void方法中调用异步函数 2 年前 |