Avatar billede misbruger Nybegynder
28. december 2005 - 22:09 Der er 10 kommentarer og
1 løsning

Fjerner jeg mit breakpoint crasher den - Threading - CF

Jeg er ved at lave en app i C# Compact Framework.

Alle (data)operationer jeg laver på en form smider jeg ud i tråde ved brug af
ThreadPool.QueueUserWorkItem( new WaitCallBack( SomeThreadProc ) );

Min tråd rejser en events når den har gjort sit, og min form lytter på disse events (er implementerde som singleton events).

Når eventen bliver rejst, skal min form opdatere nogle controller.
F.eks starter jeg en tråd som henter en collection fra en webservice, som efterfølgende skal bindes på et datagrid.

public void dataRetreivedListner(DataEventArgs myCollection)
{
  dataGrid1.Datasource = myCollection;
}

Mit problem er umiddelbart hvis jeg sætter et breakpoint på den linie hvor jeg binder datagrid'et med min collection, så virker det som forventede, men hvis jeg fjerner mit breakpoint, så crasher applicationen...

Jeg syntes umiddelbart ikke at kunne finde ud af hvorfor, og jeg har f.eks prøvet at indsætte Thread.sleep(), men det er kun når jeg har mit breakpoint indsat at lortet fungere.....?

Nogle gode forslag.

Tak
Avatar billede dr_chaos Nybegynder
29. december 2005 - 10:08 #1
har du prøvet med en try catch for at se om den kaster en exception ?
Avatar billede misbruger Nybegynder
29. december 2005 - 15:36 #2
Ja der smides ikke nogen exception!
Avatar billede dr_chaos Nybegynder
29. december 2005 - 16:12 #3
prøv lige at vise den linie kode som virker og den som ikke virker.
Avatar billede misbruger Nybegynder
29. december 2005 - 16:34 #4
Her starter jeg min tråd

private void fetchEditions()
{
  EditionController ec = new EditionController(id, true);
  ThreadPool.QueueUserWorkItem( new WaitCallBack( ThreadProc ), ec )
}
static void ThreadProc(object state)
{
  (state as EditionController).getEditions();
}

getEditions() henter data from en webservice eller xml etc, og afslutter med at rejse en singleton event der indholder en EditionCollection (customer collection baseret på ArrayList) som Args

I min form lytter jeg på eventen....

public void editionsFetched(EditionEventArgs editionArgs)
{
  this._editions = editionArgs.editions;
  if (this._editions != null)
  {
    this.bindGrid();
  }
}
private void bindGrid()
{
  this.dataGridEditions.DataSource = this._editions;
}

Jeg har sat et breakpoint på linien: this.dataGrid.DataSource...
Hvis jeg prøve at udvide 'this' i Visual Studio når exekveringen kommer til mit breakpoint, så hænger VS i 20 sek. og viser derefter alle værdier (variabler, controller etc) som <Undefined value>, og jeg skal manuelt stoppe processen på terminalen for at stoppe min debug session.

Ofte når jeg kører applicationen, så virker alting fint, men hvis jeg fjerne mit breakpoint, så kører den med sikkerhed ikke.

Jeg har derfor ikke en linie kode der virker og en der ikke gør, men blot en ustabil smørre, og jeg kan ikke lige gennemskue hvad der gør det.

Giver det bedre mening ?
Avatar billede lifo Nybegynder
29. december 2005 - 18:37 #5
Control.Invoke ?
Avatar billede misbruger Nybegynder
29. december 2005 - 22:49 #6
uddyb venligst
Avatar billede misbruger Nybegynder
30. december 2005 - 22:22 #7
Ja da!
Smid du bare et svar lifo
Avatar billede dr_chaos Nybegynder
04. februar 2006 - 17:10 #8
Du mangler at lukke spørgsmålet.
Avatar billede misbruger Nybegynder
05. februar 2006 - 10:42 #9
Jeg mangler et svar fra Martin!
Avatar billede dr_chaos Nybegynder
05. februar 2006 - 11:49 #10
hvis han ikke svarer skal du bare selv tage pointene.
Avatar billede lifo Nybegynder
05. februar 2006 - 19:20 #11
havde helt glemt dette
men synts ikke at jeg fortjener pointene 
du kan bare tage dem selv
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