Italian Thread....

LordZenzo

Well-Known Member
Licensed User
Longtime User
salve universo
sto inserendo un thread nel mio gioco
lo scopo e' creare una mappa in modo asincrono, per non avere una pausa troppo lunga
la sub che crea la mappa non ha argomenti
B4X:
Sub Mappa
Dim x As Int, y As Int,k As Int,i As Int, c As TPosizioni
k=1dip
LaMappa.Height=240dip
LaMappa.Width=240dip
....
....
....
end sub
per cui quando serve faccio
a=TreadMappa.Start(Me,"Mappa",Null)
ma mi torna questo errore
Exception : Wrong number of arguments; expected 4, got 0
che faccio?
inserisco degli argomenti inutili da passare?
 

LucaMs

Expert
Licensed User
Longtime User
Perché devi usare un thread separato? Puoi far fare il calcolo a un servizio, in background.

Se proprio vuoi usare un thread, immagino che tu stia usando una libreria apposita; indicala, magari gli diamo un'occhiata.
 

LucaMs

Expert
Licensed User
Longtime User
Ho dato un'occhiata; probabilmente la libreria è quella di Agraham, Threading Library.

Mai usata ma mi sembra che tu lanci la routine nel modo corretto, ovvero con Null come parametri.

Exception : Wrong number of arguments; expected 4, got 0

Questo errore, poi, indica che una qualche routine si aspetta 4 parametri e ne riceve 0.
Ora, la tua routine non ha parametri, il metodo Start ne richiede 3, quindi non si sa a quale routine si riferisca. Non è che hai modificato la routine Mappa?
 

LucaMs

Expert
Licensed User
Longtime User
Non so se ci siano altre librerie, non credo.

Per il disegno su canvas... se passi l'oggetto sul quale disegnare penso che dovrebbe farlo (restituendo l'oggetto "disegnato") ma non ne sono mica tanto sicuro.
Fai una provetta in un progettino al volo... beh, mi hai incuriosito, quindi la faccio io :D
 
D

Deleted member 103

Guest
salve universo
sto inserendo un thread nel mio gioco
lo scopo e' creare una mappa in modo asincrono, per non avere una pausa troppo lunga
la sub che crea la mappa non ha argomenti
B4X:
Sub Mappa
Dim x As Int, y As Int,k As Int,i As Int, c As TPosizioni
k=1dip
LaMappa.Height=240dip
LaMappa.Width=240dip
....
....
....
end sub
per cui quando serve faccio
a=TreadMappa.Start(Me,"Mappa",Null)
ma mi torna questo errore
Exception : Wrong number of arguments; expected 4, got 0
che faccio?
inserisco degli argomenti inutili da passare?
Così dovrebbe funzionare:
B4X:
Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.

    Dim TreadMappa As Thread
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    'Activity.LoadLayout("Layout1")

    Dim org(0) As Object
    TreadMappa.Initialise("TreadMappa")
    TreadMappa.Start(Me,"Mappa", org) 'Non passare "Null"
End Sub

Sub Mappa(org As Object)
    Dim x As Int, y As Int,k As Int,i As Int, c As TPosizioni
    k=1dip
    'LaMappa.Height=240dip
    'LaMappa.Width=240dip
    '....
    '....
    '....
End Sub

Sub TreadMappa_Ended(endedOK As Boolean, error As String) 'The thread has terminated. If endedOK is False error holds the reason for failure
    Log("error=" & error)
End Sub
 
Top