PRAGMA BackgroundTasks

Buongiorno a tutti !

Ho aperto per necessita un progetto dagli esempi di xojo e ho trovato questa direttiva

#Pragma BackgroundTasks False

Mi piacerebbe capire il funzionamento in particolare una conferma…
ad esempio se lo inserisco in un metodo…
questo viene eseguito filo per segno senza avviare task autonomi o prima che questo sia chiamato ???
ad esempio ero obbligato a fermare un metodo con un timer altrimenti si sovrapponevano alcune operazioni…

Ciao Massimiliano,

il pragma indica che le istruzioni devono, se possibile, essere eseguite senza passare ad un altro thread.
Il “se possibile” e’ dovuto al fatto che il sudetto pragma vale per il metodo in cui e’ inserito ma non per eventuali altri metodi chiamati dal metodo che utilizza questo pragma.

L’utilizzo tipico e’ per parti di codice dove si vuole eseguire un certo numero di operazioni senza “interruzioni” dovute all’esecuzione di codice di altri thread e il tutto al solo scopo di ottimizzazione del tempo di esecuzione.

Non deve invece essere considerato come un metodo per essere certi che non vi siano “sovrapposizioni” di operazioni possibilmente in conflitto con altri thread.
A questo scopo (mutua esclusione/serializzazione) e’ meglio utilizzare le apposite primitive di sincronizzazione mediante Semaphore o CriticalSection in base al tipo di protezione che si vuole ottenere.

Saluti.

Ho appunto provato il metodo che mi stava facendo impazzire …
adesso funziona tutto come si deve…
veniva invocata una funzione prima ancora di averla chiamata…