Innanzitutto grazie 1000, soprattutto per l'informazione "gratuita" sulle variabili, senza di quella sarebbe stato un'altro grattacapo da risolvere in fase d debug.
Ho scritto il codice come mi hai consigliato ed effettivamente non mi genera più errori, ora devo finire il codice prima di testarlo. Comunque se mi ritrovo con un altro problema del genere vedrò di procedere allo stasso modo.

Ora però mi piacerebbe sapere anche un po' di "teoria", cioè la funzione della dll mi richede come parametro un long che dovrebbe essere il puntatore della cella di memoria in cui inizia la funziona callback. Con questo sistema io non passo un long, ma una variabile Delagate ... è euivalente al puntatore richiesto? cioè... passa il valore numerico della cella di memoria?