我有一个C#项目,我从VC ++项目运行它。我在我的C#项目中使用了Clipboard
;但是当我从VC ++运行我的C#项目时,它无法正常工作。
我的C#代码:
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject.GetDataPresent("MyType",true)) //This returns true in both of cases
Console.WriteLine("Here");
object obj = dataObject.GetData("MyType"); //obj is null
MyType data = obj as MyType;
// When I copy data from normal program to called program (from VC++) this is null
显然我不能在Clipboard
的项目中使用STAThread
。我的C#项目的切入点是STAThread
,但我不知道如何制作我的VC ++项目STAThread
?
修改:Application.OleRequired() == ApartmentState.STA
返回true
,我的帖子为STAThread
。
答案 0 :(得分:0)
只需在主[System::STAThread]
答案 1 :(得分:0)
在这个项目中我手动做了一些事情,例如:
Assembly.Load()
手动加载我的主可执行程序集。AppDomain.CurrentDomain.AssemblyResolve += (sender, e)
事件来解决程序集。加载主程序集后,它请求自己获取Assembly
个对象。在这种情况下,在加载主可执行程序集后,您应该存储Assembly
对象并以AssemblyResolve
方法返回它。
这是我的问题,令人难以置信!