【发布时间】:2010-12-25 07:40:27
【问题描述】:
我想知道如何将 .NET C# COM 对象(使用 .NET 的 COM 互操作工具创建)添加到 Visual Studio 2008 ATL EXE 服务器。基本上,我正在尝试创建一个进程外自动化服务器来保存我的 C# COM 对象,以允许它充当许多客户端的单例服务器。我认为我需要做的就是将正确的条目添加到 ATL EXE 服务器的 IDL 文件中?这听起来对吗?那么有人还会知道如何实际实例化我的 C# COM 对象吗?我猜我需要重新定义它的 GUID,否则它会立即实例化 C# 吗?感谢您的帮助。
-大卫
例如: .
import "oaidl.idl";
import "ocidl.idl";
[
uuid(A9F9E81F-D5FE-4718-8078-E8378CFB3D3C),
version(1.0),
helpstring("Libreria dei tipi SSOLoginDLLServer 1.0")
]
library SSOLoginDLLServerLib
{
importlib("stdole2.tlb");
import "SSOLoginDLL.tlb"; <-- Reference included to my C# project which creates the TLB
[
uuid(A8FD5BC5-3B8D-4828-B9CB-6496A7A6D9B9)
]
coclass CSSOLogin
{
[default] interface ISSOLogin;
[default, source] dispinterface ISSOLoginEvents;
};
};
【问题讨论】:
-
听起来你有三个问题有点混乱......(1)如何在ATL中创建COM服务器; (2) 如何使该服务器成为单实例和/或使实例共享单例资源; (3) 从该服务器(或资源)中如何实例化和使用另一个 COM 对象(恰好在 .NET 中实现)。你能澄清一下你坚持哪一个吗?
-
另外两个我可以验证/测试一旦我得到你的#3 的答案 :),所以我想说我如何让 ATL EXE COM 服务器向外界提供另一个已经编写好的 COM目的。谢谢。
标签: c# com-interop atl exe