Function restricted to threads - Functions that are called with THREAD CREATE may not be called in the conventional manner. This restriction is necessary because thread Functions require additional initialization steps that are not included in standard function code.
One situation that can arise is where a Function may need to be invoked both directly and used as a thread Function. The easiest solution is to create a small wrapper function for the function, then use THREAD CREATE with the wrapper function, or call the original function directly. For example:
FUNCTION WorkerFunc(BYVAL x AS LONG) AS LONG
' code here
END FUNCTION
FUNCTION WorkerThread(BYVAL x AS LONG) AS LONG
FUNCTION = WorkerFunc(x)
END FUNCTION
' more code here
' Execute the worker function directly, thus:
lResult& = WorkerFunc(var&)
' Execute the worker thread as a thread, using
' the wrapper function:
THREAD CREATE WorkerThread(var&) TO hThread???