我是COM的新手,试图理解STA和MTA之间的区别.我试图创建一个示例,该示例将显示COM可以管理在STA中创建的对象的调用,该对象不是线程安全的.
MyCalcServer这里的类是使用ATL Simple Object创建的.使用的设置与本文中的相同:
MyCalcServer COM对象用于另一个C#项目,它是:
class Program
{
[STAThread]
static void Main(string[] args)
{
MyCOMLib.MyCalcServer instance = new MyCOMLib.MyCalcServer();
string output1;
instance.ChangeValue("Gant", out output1);
Console.WriteLine(output1);
Thread t1 = new Thread(() =>
{
while (true)
{
string output;
instance.ChangeValue("Gant", out output);
Console.WriteLine(output);
}
});
t1.SetApartmentState(ApartmentState.STA);
t1.Start();
// :
// also has t2 and t3 here with similar code
// :
t1.Join(); t2.Join(); t3.Join();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这总是导致在InvalidCastExceptiont1的代码中引发(E_NOINTERFACE).我也尝试将ApartmentState更改为MTA但没有成功.
无法将"MyCOMLib.MyCalcServerClass"类型的COM对象强制转换为接口类型"MyCOMLib.IMyCalcServer".此操作失败,因为由于以下错误,对IID为"{B005DB8C-7B21-4898-9DEC-CBEBE175BB21}"的接口的COM组件的QueryInterface调用失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)) .
有人可以解释我在这里做错了吗?
无意中,通过使用GUI而不是CLI,我删除了Mercurial项目中的每个文件.
我恢复了Revert确定并失去了一些工作,因为我有时间机器我可以很容易地回来.但有没有一种方法可以取消删除/取消删除这些文件?通过手册和谷歌搜索,但看不到任何东西.有插件吗?
我可能在这里回答我自己的问题,但文件已从目录中消失,并没有在垃圾桶中恢复所以我假设删除是不可撤销的?
ps我知道hg forget或hg remove -Af将删除而不删除目录,但我的问题与我做的错误有关,而不是冷静思考行动通过.
这些建议是否适合成功的培训课程?
我应该给出的任何其他建议?我是实习生而非培训师.我应该给培训师/组织者什么建议?
我有这样的查询: SELECT * FROM table WHERE id IN (2,4,1,5,3);
但是,当我打印出来时,它会自动排序1,2,3,4,5.如何在不改变数据库结构的情况下维护订单(2,4,1,5,3)?
谢谢!
我在windows中使用com0com进行程序测试,是否有像linux中的com0com这样的程序?
我知道有pts/ptmx,但我想要的是一个独立的程序,提供2个虚拟串口...
然后我可以打开2个程序,每个注意一个...
好的,这是避免歧义的最佳方法吗?
template <class T>
inline void swap(T &a, T &b)
{
T c; c = a; a = b; b = c;
}
/* blah blah blah (inside of a function:) */
for (itv = vals.begin(); itv != vals.end(); ++itv)
{
if (at < (*itv)) { swap(at, (*itv)); }
if (at % (*itv) == 0) atadd = false;
}
/* blah blah blah */
Run Code Online (Sandbox Code Playgroud)
使用交换调用也不起作用,因为它说无法解决它是否是"void swap(T&,T&)","void std :: swap(_Ty&,_ Ty&)"或......
顺便说一下,itv是一个vector <int> :: iterator.
谢谢.
我想灰显一些菜单项,因此可见但禁用.
如何在黑莓手机上做到这一点?
我已经开发了一个插件来搜索方法的引用.我想打印引用方法的行号.我搜索通过IMethod类的方法并检查特定的函数引用.现在我想要打印该行号码.我怎么能这样做?帮助
谢谢
问候 ,
有没有办法从web.xml context-param中获取值到Spring上下文?
例如,我将web.xml中的值定义为:
<context-param>
<param-name>compass-index</param-name>
<param-value>file:///home/compass/index</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
我想将该值分配给bean属性:
<bean ...>
<props>
<prop key="compass.engine.connection">
${from web.xml context-param?}
</prop>
</props>
</bean>
Run Code Online (Sandbox Code Playgroud)
提前致谢?