Dostaję taki błąd:Co to jest rodzic, który można zamrozić? Co oznacza ten błąd?
nie można użyć DependencyObject który należy do innego wątku niż jego rodzic freezable
Co to w ogóle znaczy? Czy to po angielsku? Czy rodzic jest zamrożony, czy jest to po prostu zamrożone? Jakikolwiek sposób, aby rodzic nie podlegał zamrożeniu, jeśli spowoduje, że błąd zniknie?
Co się dzieje:
Mam dwa OpenGL WinForms kontroli w aplikacji WPF, a do tej pory, wszystko to pracuje płynnie (myślę). Teraz dodałem aktualizację, więc gdy jedna formuła WinForm zaktualizuje obraz, druga powinna również. To faktycznie działało, a teraz dostaję tego błędu. Przechodzenie przez kod powoduje awarię w losowych miejscach, co prowadzi mnie do przekonania, że jest to błąd zbierania śmieci (tj. Niektóre aktualizacje w innym wątku tworzą coś, co zbiera śmieci, a kolekcja dzieje się w losowym czasie).
Wyjątek został przechwycony metodą głównej metody i jest to wyjątek InvalidOperationException.
Chwytam tutaj słomki. Gdzie zaczynam?
EDIT: Wygląda na to wezwanie, które jest przyczyną problemu jest to jedno:
if (imagePanel.InvokeRequired)
{
imagePanel.Invoke(new System.Windows.Forms.MethodInvoker(delegate{
imagePanel.ClearImages();
}));
}
else
{
imagePanel.ClearImages();
}
ja wciąż śledzenia go w dół; jeśli ta seria wierszy zostanie skomentowana, awaria nadal się zdarza, a status wątku ma wątek "właśnie zakończony" (stąd założenie wyrzucania śmieci).
jeden z nielicznych przypadków, gdzie diagramów zdanie byłoby pomocne .. . –
Niezwykle złe sformułowanie tytułu. Nikt nie może znaleźć tego pytania, szukając odpowiednich słów kluczowych, ponieważ żadna nie jest w tytule. To nie jest forum pomocy technicznej, właściwie sformułuj pytania ... – Timwi
Hej, @Timwi, przeczytaj odpowiedź. Uświadom sobie, że zostawiłem tu tylko to pytanie, ponieważ znalazłem odpowiedź, ale było to bardzo frustrujące. Jeśli chcesz edytować tytuł, zdobądź więcej powtórzeń i zrób to sam, jak uważasz, że tak powinno być. – mmr