[ _Doctor_ @ 25.09.2005. 00:31 ] @
Prvo pozdrav svima i nadam se da cce neko mocci da mi pomogne u vezi thread-ova. Naime o chemu se radi, pa ovako: Pocheo sam da modifikujem tetris tj. da zamenim timer sa thread-om (Koliko je to teshko nisam ni sanjao). Shta se deshava? Dobijam sledecci exception: "Controls created on one thread cannot be parented to a control on a different thread" u trenutku kada je figura pala do kraja tj. u tom trenutku se poziva funkcija koja prikazuje u NEXT panel-u sledeccu figuru. Deo koda: private void Tick (){ while(!gameEnd){ if(generator.canMoveDown(currPiece)){ currPiece.moveDown(); } else { collector.addElemRange (currPiece.getElems()); currPiece = nextPiece; if(collector.removeRows()) { // Ako je doslo do brisanja reda. deletedRows += collector.DELETED_ROWS; points += collector.DELETED_ROWS * collector.DELETED_ROWS * 100; int val = prbLevel.Value; val += collector.DELETED_ROWS; if(val >= prbLevel.Maximum) val = val - prbLevel.Maximum; prbLevel.Value = val; if(deletedRows >= gameLevelLimit && gameLevel < 12){ // Setting game level levelUp(); lblLevelNum.Text = gameLevel.ToString(); //timGame.Interval = gameSpeed; } lblPointsNum.Text = points.ToString(); lblRowsNum.Text = deletedRows.ToString(); } if(generator.canAddPiece()) { gameField.Controls.AddRange(currPiece.getElems()); showNext(); // OVDE PUCA PROGRAM } else { if(gameOver.ShowDialog() == DialogResult.OK){ newGame(); } else { gameEnd = true; } } } Thread.Sleep(gameSpeed); } } Treba mi samo ideja tj. u kom pravcu da razmishljam u radu sa thread-ovima. Svestan sam da su thread-ovi jedan od problematichnijih delova programiranja ali shta da radim kad nisam imao gde drugde da se obratim. Unapred hvala svima na pomocci i nadam se da nisam previshe trazzio. [Ovu poruku je menjao _Doctor_ dana 25.09.2005. u 01:33 GMT+1] |