Ik ben bezig met het leren van threads.
Alleen krijg ik constant een exception wanneer ik probeer te invoken als mijn 2e thread start,.
Vanuit de hoofdklasse(Form1.cs) , zit deze code achter een button
Er word dus een nieuwe download class geinitieerd , en vanuit daar word een thread gestart.
Om mijn listviewitem op Form1.cs te updaten vanuit de draaiende thread gebruik ik dus invoke.
Bij de 1e thread die word aangemaakt, gaat dit allemaal goed, echter bij de 2e thread krijg ik een
ArgumentOutOfRangeException in onderstaande stukje code.
Om dat wat duidelijker te maken heb ik een printscreen toegevoegd
http://img90.imageshack.us/my.php?image=exceptionjz5.jpg
De exception geeft dus aan dat value=2 outOfRange is , maar ik kan die Value=2 nergens uit opmaken.
Ik weet natuurlijk ook wel dat GoT'ers hier er niet zijn om te debuggen , maar dat vraag ik ook niet.
Ik wil alleen weten in welke richting ik de fout moet zoeken , of is het misschien wel een bekend iets?
Ook lopen mijn threads niet gelijk , eerst word thread 1 afgehandeld , en daarna pas thread 2.
Dat moet echter niet(Anders was er zoiets als thread.join toch?).
Waar kan dat aan liggen?
Ligt het waarschijnlijk aan het feit dat ik mijn download class verkeerd aanroep?
Alleen krijg ik constant een exception wanneer ik probeer te invoken als mijn 2e thread start,.
Vanuit de hoofdklasse(Form1.cs) , zit deze code achter een button
C#:
1
| dl = new download(this, getListViewTag(), setRowNumber() - 1); |
Er word dus een nieuwe download class geinitieerd , en vanuit daar word een thread gestart.
C#:
1
2
3
4
5
6
7
8
9
| public download(mainForm form,string links,int rowId) { this.form = form; this.linkUrl = links; this.rowNum = rowId; thread = new Thread(new ThreadStart(downloadPodCast)); thread.Start(); } |
Om mijn listviewitem op Form1.cs te updaten vanuit de draaiende thread gebruik ik dus invoke.
Bij de 1e thread die word aangemaakt, gaat dit allemaal goed, echter bij de 2e thread krijg ik een
ArgumentOutOfRangeException in onderstaande stukje code.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| private void DoUpdate(String message) { if (form.InvokeRequired) { // we were called on a worker thread // marshal the call to the user interface thread form.Invoke(new UpdateStatusDelegate(DoUpdate),new object[] { message }); return; } // this code can only be reached // by the user interface thread form.listView2.Items[rowNum -1 ].SubItems[getColVal()].Text = message; } |
Om dat wat duidelijker te maken heb ik een printscreen toegevoegd
http://img90.imageshack.us/my.php?image=exceptionjz5.jpg
De exception geeft dus aan dat value=2 outOfRange is , maar ik kan die Value=2 nergens uit opmaken.
Ik weet natuurlijk ook wel dat GoT'ers hier er niet zijn om te debuggen , maar dat vraag ik ook niet.
Ik wil alleen weten in welke richting ik de fout moet zoeken , of is het misschien wel een bekend iets?
Ook lopen mijn threads niet gelijk , eerst word thread 1 afgehandeld , en daarna pas thread 2.
Dat moet echter niet(Anders was er zoiets als thread.join toch?).
Waar kan dat aan liggen?
Ligt het waarschijnlijk aan het feit dat ik mijn download class verkeerd aanroep?
www.degroot-it.nl