WorkerClearAllReceiveQueues Method

Discards all available messages from all receive queues.

Definition

Namespace: Peak.Can.Basic
Assembly: PCANBasic.NET (in PCANBasic.NET.dll) Version: 4.9.0
C#
public void ClearAllReceiveQueues()

Remarks

Unlike the Api class, the Worker class doesn't clear the receive queues on disconnect. A Worker object muss explicitly be instructed to clear its receive queues when deactivating the connection, i.e. by calling the Stop method, or by calling the ClearReceiveQueue/ClearAllReceiveQueues methods at any time.

This implies, that an application can keep processing messages after a connection to a PCAN Channel has been terminated.

Example

The following example shows how to clear all receive queues.

In case of failure, an error messages is written to the console output using English as output language.

C#
// Create the object using the default configuration
//
Worker myWorker = new Worker();

try
{ 
    // Activate the worker object
    //
    myWorker.Start();
    Console.WriteLine("The Worker object was activated successfully.");

    // Set the second filter (index 1) to pass all messages 
    //
    myWorker.SetFilteringState(1, FilteringState.PassForAll);

    // Wait for sometime to get messages in the receive queue
    //
    Console.WriteLine("Waiting for messages......");
    System.Threading.Thread.Sleep(5000);

    // Get and show the amount of messages contained in the first and second receive queues
    //
    Console.WriteLine($"There are {myWorker.GetAvailableMessagesCount()} messages in the first receive queue. ");
    Console.WriteLine($"There are {myWorker.GetAvailableMessagesCount(1)} messages in the second receive queue. ");

    // Clear all receive queues and show the amount of messages in them again
    //
    myWorker.ClearAllReceiveQueues();
    Console.WriteLine($"There are {myWorker.GetAvailableMessagesCount()} messages in the first receive queue. ");
    Console.WriteLine($"There are {myWorker.GetAvailableMessagesCount(1)} messages in the second receive queue. ");

    // Deactivate the worker object, when it is no longer needed
    //
    myWorker.Stop();
    Console.WriteLine("The Worker object was deactivated.");
}
catch(Exception ex)
{
    Console.WriteLine($"An exception occurred by activating the Worker object. {ex.Message}");
}

See Also