Browse Source

Fixed Forum-8646(asl): Release tracked COM objects synchronously

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1536 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 19 years ago
parent
commit
acccc71f60
  1. 15
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Wrappers/ResourceManager.cs

15
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Wrappers/ResourceManager.cs

@ -25,7 +25,8 @@ namespace Debugger.Wrappers @@ -25,7 +25,8 @@ namespace Debugger.Wrappers
public static class ResourceManager
{
static bool trace;
static MTA2STA mta2sta = new MTA2STA();
static bool trace = true;
static Dictionary<object, TrackedObjectMetaData> trackedCOMObjects = new Dictionary<object, TrackedObjectMetaData>();
public static bool TraceMessagesEnabled {
@ -54,6 +55,18 @@ namespace Debugger.Wrappers @@ -54,6 +55,18 @@ namespace Debugger.Wrappers
}
public static void ReleaseCOMObject(object comObject, Type type)
{
// Ensure that the release is done synchronosly
try {
mta2sta.AsyncCall(delegate {
ReleaseCOMObjectInternal(comObject, type);
});
} catch (InvalidOperationException) {
// This might happen when the application is shuting down
}
}
static void ReleaseCOMObjectInternal(object comObject, Type type)
{
TrackedObjectMetaData metaData;
if (comObject != null && trackedCOMObjects.TryGetValue(comObject, out metaData)) {

Loading…
Cancel
Save