
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
I have created a thread using the CBL_CREATE_THREAD routine. However, when I attempt to kill the thread using CBL_THREAD_KILL it does not kill the thread. The thread remains running. My thread is defined as follows
01 THREAD-StatusBar-Routine USAGE IS THREAD-POINTER.
and my call statement is
CALL "CBL_THREAD_KILL" USING BY VALUE THREAD-StatusBar-Routine Move Return-Code To Thread-Return-Code.
The return code I get is
1009 | Invalid parameter passed into a multi-threading library routine. A parameter has been detected that is not within the valid range, or that is inconsistent with the library routine. |
Also in visual studio intellisense it says can not find method CBL_THREAD_KILL with this signature. Will create dynamic call.
What am I doing wrong?
Thanks
Accepted Solutions

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Unfortunately I think the answer is that you're not doing anything wrong. This is caused by a bug in our compiler, though coincidentally it's a bug that I just fixed. This will work correctly in the 2.2 Update 1 version of the product.
As a work-around, try adding a variable of type System.IntPtr, and coding as follows:
01 THREAD-StatusBar-Routine USAGE IS THREAD-POINTER.
01 IntPtr type System.IntPtr.
*>CALL "CBL_THREAD_KILL" USING BY VALUE THREAD-StatusBar-Routine
set IntPtr to Thread-StatusBar-Routine as type System.IntPtr
CALL "CBL_THREAD_KILL" USING BY VALUE IntPtr

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Unfortunately I think the answer is that you're not doing anything wrong. This is caused by a bug in our compiler, though coincidentally it's a bug that I just fixed. This will work correctly in the 2.2 Update 1 version of the product.
As a work-around, try adding a variable of type System.IntPtr, and coding as follows:
01 THREAD-StatusBar-Routine USAGE IS THREAD-POINTER.
01 IntPtr type System.IntPtr.
*>CALL "CBL_THREAD_KILL" USING BY VALUE THREAD-StatusBar-Routine
set IntPtr to Thread-StatusBar-Routine as type System.IntPtr
CALL "CBL_THREAD_KILL" USING BY VALUE IntPtr

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Thanks That worked to kill the thread. Is there a way to send a message to a thread so that it can exit itself rather then just killing it?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Most thread communication can be handled using one of the synchronization primitives like a mutex, event, semaphore, monitor, etc.
You could also set a flag variable in the main thread in shared storage that the thread could then check to see if it should exit or not.