Изображение ниже показывает разницу между дамп памяти:
. На изображении ниже показано различие между двойной памятью:
. />[*].net core
< li>. НЕТ. Refcounted handle .
, насколько я понимаю, это так, как я понял, что это связано с этим. Объект не выпускается правильно, поэтому я пытаюсь выпустить все ссылки, устанавливая его ссылки на 0 в методе Zwebbrowser's Dispose () , но он вообще не помогает.
Код: Выделить всё
protected override void Dispose(bool disposing){
object? comObj = null;
if (disposing)
{
comObj = this.ActiveXInstance;
}
base.Dispose(disposing);
if (comObj is object && Marshal.IsComObject(comObj))
{
Marshal.FinalReleaseComObject(comObj);
}
}
< /code>
Чтобы понять проблему, я стараюсь понять фундаментальное различие в механизме .NET Core и Framework GC. Webbrowrowser, кажется, мусор, собранная по-разному в двух версиях.
public void TestRunLeak()
{
List browsers = new List();
for (int i = 0; i < 100; i++)
{
using (var browser = new System.Windows.Forms.WebBrowser())
{
browsers.Add(new WeakReference(browser));
browser.Navigate("about:blank");
}
}
var count = browsers.Count(browser => browser.IsAlive);
#if NETFRAMEWORK
Assert.That(1, count)
// count == 1 for .NET framework, the very final browser created
#elif NETCOREAPP
AssertEquals(100, count); // count == 100 for .NET core
#endif
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -net-frame