我試圖聚集的COM對象中的.NET對象(外未知)時,使用下面的代碼我得到一個ExecutionEngineException:爲什麼我試圖COM聚集
Object obj = ... // some ComVisible .NET object
var comObj = (IMyComInterface)Activator.CreateInstance(Type.GetTypeFromProgID("some.progid"));
var unknown = Marshal.GetIUnknownForObject(comObj);
var innerUnknown = Marshal.CreateAggregatedObject(unknown, obj);
// This is where the ExecutionEngineException is thrown.
var aggObj = Marshal.GetObjectForIUnknown(innerUnknown);
// Make outer object aware of our dotnet object, say.
comObj.DotNetObj = aggObj;
Marshal.Release(unknown);
...
,請問有什麼「明顯」錯誤用這個代碼?這個例外讓我很少繼續下去。另外令人討厭的是,這種例外並不總是發生,儘管它經常發生。 有沒有另一種方法來實現這一目標? (即將內部未知的IntPtr編組爲我的COM對象)
注意:我必須定位框架的第2版,並且沒有嘗試版本4,並且據我所知,完全是最新的。
嘗試'comObj.DotNetObj = innerUnknown;'。對'GetObjectForIUknown'的調用是不必要的。 – Ben 2012-03-28 07:55:19