webForumDet fria alternativet

Hur hanterar jag ThreadStateException?

1 svar · 179 visningar · startad av Engine^

Engine^Medlem sedan dec. 20003 887 inlägg
#1

Jag är inte hemma på hur trådar hanteras i C# och stötte på ett smärre problem.

Jag kör en tråd, som försätts i ThreadState.Suspended-läge och om jag då kör Thread.Abort() på tråden kastas ett ThreadStateException av någon anledning som jag inte förstår. På MSDN står det

MSDN skrev:

If Abort is called on a thread that has been suspended, the thread is resumed and then aborted

Jag fullöste det med

try
{
  Thread.Abort();
}
catch(ThreadStateException ex)
{
}

Vad är det egentligen som händer? Varför får jag detta exception och hur ska det hanteras?

Engine^Medlem sedan dec. 20003 887 inlägg
#2

Problemet är halvlöst, men jag vill fortfarande veta varför jag får exception.

Lösning

if(Thread.ThreadState == ThreadState.Suspended)
  Thread.Resume();

try
{
  Thread.Abort();
}
catch(ThreadStateException ex)
{
  throw(ex);
}

Det fungerar, men frågan är ju om det är rätt.

123 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)