c4d.threading.C4DThread¶
-
class
c4d.threading.
C4DThread
¶ Here you see a very simple example how to create code which runs in another thread.
import c4d class UserThread(c4d.threading.C4DThread): def Main(): # Put in your code here # which you want to run # in another thread pass thread = UserThread() thread.Start() # Do some other operations here thread.Wait(True) # Wait until the main method is done
Warning
Ensure that every thread created byC4DThread
is closed by the user on exit.PluginMessage() can be used for that purpose, intercepting C4DPL_ENDACTIVITY message.See also
Threading Information for important information about threads.
Methods Signatures
Methods to Override
C4DThread.Main(self) |
Override with your thread main code. |
C4DThread.TestDBreak(self) |
Override this to add user breaks such as pressing ESC. This function is called by TestBreak() . |
Methods to Call
C4DThread.End(self[, wait]) |
End the thread. |
C4DThread.Get(self) |
Get the BaseThread for this thread. |
C4DThread.IsRunning(self) |
Checks if the thread is running. |
C4DThread.Start(self[, mode, priority]) |
Start the thread running. |
C4DThread.TestBreak(self) |
Checks if the thread received a break command to stop processing.
|
C4DThread.Wait(self, checkevents) |
Waits until the thread has finished. |
Methods Documentation
-
C4DThread.
Main
(self)¶ Override with your thread main code.
Note
Remember that a scope might be done even the threaded code is still executed.In this situation you have to useWait()
to wait until the code is finished or you should create an instance of your thread class into a scope which is longer alive than the code needs to run.
-
C4DThread.
TestDBreak
(self)¶ Override this to add user breaks such as pressing ESC. This function is called by
TestBreak()
.Return type: bool Returns: True if processing should be terminated, otherwise False.
-
C4DThread.
End
(self, wait=True)¶ End the thread.
Note
If the thread does not check for
TestBreak()
then this function will not return and you will get a deadlock.Parameters: wait (bool) – This parameter determines if thread termination is synchronous or asynchronous. If True the function will not return until the thread is finished. If False the function returns immediately although the thread will still run until it is finished.
-
C4DThread.
Get
(self)¶ Get the
BaseThread
for this thread.Return type: c4d.threading.BaseThread Returns: The BaseThread
of this thread.
-
C4DThread.
IsRunning
(self)¶ Checks if the thread is running.
Return type: bool Returns: True if the thread is running, otherwise False.
-
C4DThread.
Start
(self, mode=THREADMODE_ASYNC, priority=THREADPRIORITYEX_NORMAL)¶ Start the thread running.
Parameters: - mode (int) –
Thread mode:
THREADMODE_DEPRECATED_SYNCHRONOUS Synchronous thread. Deprecated. THREADMODE_ASYNC Asynchronous thread. THREADMODE_PRIVATE_OPENGL New in version R18: Private
- priority (int) –
Thread priority:
THREADPRIORITY_NORMAL Normal. THREADPRIORITY_ABOVE Above. THREADPRIORITY_BELOW Below. THREADPRIORITY_LOWEST Lowest.
Return type: bool
Returns: True if the thread was started, otherwise False.
- mode (int) –
-
C4DThread.
TestBreak
(self)¶ - Checks if the thread received a break command to stop processing.Normally this is only True when Cinema 4D is closing, or when
End()
has been called.Note
You can add more break conditions, such as if ESC has been pressed, in
TestDBreak()
.Return type: bool Returns: True if processing should be terminated, otherwise False.
-
C4DThread.
Wait
(self, checkevents)¶ Waits until the thread has finished.
Parameters: checkevents (bool) – If False then wait until the thread has finished. If True then additionally return if a Cinema 4D event occurred.