У меня проблема с переполнением памяти в простом приложении.
Приложение скомпилировано как библиотека классов, экспортировано несколько функций, таких как:
[DllExport(CallingConvention = CallingConvention.Cdecl)]
public static void Test(){
RunWindow();
}
Функция RunWindow () открыть простое окно в XAML, затем закройте его вручную.
Thread thread = new Thread(() =>
{
dialog = new MyDialog();
dialog.ShowDialog();
});
thread.SetApartmentState(ApartmentState.STA);
thread.IsBackground = true;
thread.Start();
thread.Join();
И простое окно:
<Application x:Class="test.MyDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MyDialog.xaml">
<Application.Resources>
</Application.Resources>
</Application>
Каждый раз, когда я вызываю функцию тестирования из памяти dll, увеличивается после ~ 300 вызовов приложения cra sh из-за исключения StackOverflow. Ниже я прикрепил увеличение памяти после 5 звонков.
Как освободить всю память, используемую dll? Он выпускается только когда я закрываю приложение, открывшее эту DLL.
Я пытался вручную освободить память, но это не помогло.
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();