Nie można wystartować nowego wątku z powodu OutOfMemoryException

0

Mam aplikację, która do tej pory była zbudowana w całości w oparciu o Windows Forms. Obecnie powstała potrzeba, by jedno z jej okienek zamienić na WPF. Niestety, kod, który działał bez problemów na Windows Formsach, teraz rzuca następujący wyjątek:

   at System.Threading.Thread.StartInternal(IPrincipal principal, StackCrawlMark& stackMark)
   at System.Threading.Thread.Start(StackCrawlMark& stackMark)
   at System.Threading.Thread.Start()
   at Projekt.Klasa.Metoda_Load(Object sender, EventArgs e) in h:\WORK\Projekt\Projekt\Klasa.cs:line 545

Kod jest rzucany w momencie:

var t = new Thread(StartProc, int.MaxValue);
t.Start();


Zawartość StartProc raczej nie ma znaczenia, bo 1. jest taka sama jak w wersji dla Windows Forms, 2. kod tam wcale nie dociera.

Generalnie tworzenie formatek jest raczej banalne, nic ciekawego (kod w pliku cs okienka WPF):
<code class="c#">
var form = new KlasaMojegoWindowsForm
{
     Parametr1 = parametr1,
     Parametr2 = parametr2
};
form.Show();

A sam start nowego wątku odbywa się w metodzie Load tej formy.

Czy macie może jakieś podpowiedzi, na co zwrócić uwagę, jak znaleźć przyczynę...? Czy wołanie Windows Formsa z WPFa ma jakieś ograniczenia, o których nie wiem? Dlaczego OutOfMemory, chociaż nie ma tu żadnej pętli tworzącej obiekty ani jakiegoś specjalnego napychania danych?

0
var t = new Thread(StartProc); t.Start(); ``` Tak działa...
1

Maximum stack size wielkości 2147483647 bajtów? Trochę sporo.

0

Ale po co Ci w ogóle ten drugi parametr?

Szczerze mówiąc, kompletnie nie pamiętam :D
Ten kod powstał dawno temu... Wygląda na to, że jest zbędny ;)

1

Tak tylko dodam, że używanie teraz gołego Thread uznawane jest za złą praktykę.
Lepiej to zrobić za pomocą Task, albo ew. ThreadPool.

1 użytkowników online, w tym zalogowanych: 0, gości: 1