Avatar billede Slettet bruger
16. september 2009 - 15:43 Der er 4 kommentarer og
1 løsning

Tråd hænger ved event kald

Hej

Jeg har en tråd hvor jeg fanger en ThreadAbortExeception. Jeg aborter tråden ved at kalde abort og join.

Min tråd catch ser således ud:

catch (ThreadAbortException)
{
  if (workerThread_Aborted != null)
      workerThread_Aborted(this, new EventArgs());
}

som kalder følgende:

private void SendReportEmailForm_workerThread_Aborted(object sender, EventArgs e)
{
    ResetControls();
}

som kalder følgende:

private void ResetControls()
        {
            if (this.InvokeRequired)
                this.Invoke(new MethodDelegate(ResetControls));
            else
            {
                EmailProgressBar.Visible = false;
                EmailProgressBar.Value = 0;
                EmailProgressBar.Step = 1;
                EmailProgressBar.Minimum = 0;
                EmailProgressBar.Maximum = reportReceivers.Count;
                succeded = new List<ReportCommon.ReportEmailReceiver>();
                failed = new List<ReportCommon.ReportEmailReceiver>();
            }

Alt går fint, den forsøger at invoke metoden, men kommer aldrig videre derfra, hvordan kan det være?
Avatar billede bitmatic Nybegynder
16. september 2009 - 16:12 #1
Så vidt jeg husker er Invoke() et blocking call.
Så måske er det der sker at din ene tråd står og venter på den anden ved Join(), imens den anden venter på den ene ved Invoke().
Avatar billede Slettet bruger
16. september 2009 - 16:20 #2
Hvordan kan jeg så løse det?
Avatar billede bitmatic Nybegynder
16. september 2009 - 18:08 #3
Brug BeginInvoke i stedet for Invoke.

Alternativt kan du prøve at lave et timeout på Join. Det burde lade hovedtråden udføre invoke-kaldet.
Altså noget lignende af:
while(t.Join(100)==false){}
Avatar billede Slettet bruger
17. september 2009 - 16:26 #4
bitmatic, BeginInvoke løste det, smid et svar..
Avatar billede bitmatic Nybegynder
17. september 2009 - 19:20 #5
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester