HidLibrary is pretty good compared with the others I've used so try stick with it.
When Data comes in it fires the "OnReport" handler that you assign when initialising your HidDevice.
E.g.
_myDevice = HidDevices.Enumerate(myVendorId, myProductId).FirstOrDefault();
if (_myDevice != null)
{
_myDevice.OpenDevice();
_myDevice.Inserted += DeviceAttachedHandler;
_myDevice.Removed += DeviceRemovedHandler;
_myDevice.MonitorDeviceEvents = true;
// this is where we start listening for data
_myDevice.ReadReport(OnReport);
}
In this case, "OnReport" is the name of your event handler and it will be called when whenever data arrives from your device. The name "OnReport" isn't very descriptive, but the examples all use this name so I've stuck with it in my code as well. What's important is that at the end of the handler, you ask your device to fire back again after more data arrives, hence the last line in the OnReport function calling again to ReadReport.
private void OnReport(HidReport report)
{
if (attached == false) { return; }
// process your data here
var byteFromMyDevice = report.Data[0];
// we need to start listening again for more data
_myDevice.ReadReport(OnReport);
}