У меня есть приложение Windows Forms, которое импортирует и использует некоторые методы C ++ из user32.dll.
[DllImport("user32.dll")]
public static extern IntPtr WindowFromPoint(int xPoirnt, int yPoint);
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(String sClassName, String sAppName);
[DllImport("user32.dll")]
public static extern IntPtr FindWindowEx(IntPtr parentHandel, IntPtr childAfter, String sClassName, String windowTitle);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImport("user32.dll")]
public static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags);
[DllImport("msvcrt.dll")]
private static extern int memcmp(IntPtr b1, IntPtr b2, long count);
Я заметил, что после того, как мое приложение работает в течение длительного периода времени, использование памяти может доходить до 500 МБ (начальные 5 МБ).
У меня нет такого большого опыта работы с C ++, но я знаю, что вы должны вручную управлять памятью для C ++.
Мои вопросы: нужно ли мне управлять памятью для моего приложения или сборщик мусора в C # справится с этим.
Задача ещё не решена.
Других решений пока нет …