/// </summary>
public class ContactsList:IDisposable
{
+ private Int64 _memoryPressure = 20;
internal IntPtr _listHandle;
internal ContactsList(IntPtr handle)
{
+ int count;
+
_listHandle = handle;
+ int error = Interop.List.ContactsListGetCount(_listHandle, out count);
+ if ((int)ContactsError.None != error)
+ {
+ Log.Error(Globals.LogTag, "ContactsList Failed with error " + error);
+ throw ContactsErrorFactory.CheckAndCreateException(error);
+ }
+ _memoryPressure += count * ContactsViews.AverageSizeOfRecord;
+ GC.AddMemoryPressure(_memoryPressure);
}
/// <summary>
Log.Error(Globals.LogTag, "ContactsList Failed with error " + error);
throw ContactsErrorFactory.CheckAndCreateException(error);
}
+ GC.AddMemoryPressure(_memoryPressure);
}
~ContactsList()
int error = Interop.List.ContactsListGetCount(_listHandle, out count);
if ((int)ContactsError.None != error)
{
- Log.Error(Globals.LogTag, "ContactsList Failed with error " + error);
+ Log.Error(Globals.LogTag, "ContactsList Count Failed with error " + error);
throw ContactsErrorFactory.CheckAndCreateException(error);
}
return count;
}
disposedValue = true;
+ GC.RemoveMemoryPressure(_memoryPressure);
}
}
throw ContactsErrorFactory.CheckAndCreateException(error);
}
record._disposedValue = true;
+ _memoryPressure += ContactsViews.AverageSizeOfRecord;
}
/// <summary>
throw ContactsErrorFactory.CheckAndCreateException(error);
}
record._disposedValue = false;
+ _memoryPressure -= ContactsViews.AverageSizeOfRecord;
}
/// <summary>
{
private string _uri = null;
private uint _id;
+ private Int64 _memoryPressure = ContactsViews.AverageSizeOfRecord;
internal IntPtr _recordHandle;
internal ContactsRecord(IntPtr handle)
Log.Error(Globals.LogTag, "ContactsRecord Failed with error " + error);
throw ContactsErrorFactory.CheckAndCreateException(error);
}
+ GC.AddMemoryPressure(_memoryPressure);
_uri = Marshal.PtrToStringAnsi(viewUri);
}
Log.Error(Globals.LogTag, "ContactsRecord Failed with error " + error);
throw ContactsErrorFactory.CheckAndCreateException(error);
}
+
+ if (!_disposedValue)
+ GC.AddMemoryPressure(_memoryPressure);
_uri = Marshal.PtrToStringAnsi(viewUri);
}
throw ContactsErrorFactory.CheckAndCreateException(error);
}
_uri = Marshal.PtrToStringAnsi(viewUri);
+ GC.AddMemoryPressure(_memoryPressure);
}
/// <summary>
throw ContactsErrorFactory.CheckAndCreateException(error);
}
_uri = viewUri;
+ GC.AddMemoryPressure(_memoryPressure);
}
~ContactsRecord()
Log.Error(Globals.LogTag, "Dispose Failed with error " + error);
throw ContactsErrorFactory.CheckAndCreateException(error);
}
-
_disposedValue = true;
+ GC.RemoveMemoryPressure(_memoryPressure);
}
}