private void PollForRisingEdge(PCI_7250 device, OnRisingEdgeDetected onRisingEdgeDetected)
 {
   while (m_shouldPoll)
   {
     // Optional: sleep to avoid consuming CPU
     
     uint newPortValue = device.ReadAllDigitalLines();
     uint changedLines = m_currentPortValue ^ newPortValue;
     uint risingEdges = newPortValue & changedLines;
     m_currentPortValue = newPortValue;
     
     if (risingEdges != 0)
     {
       onRisingEdgeDetected(currentValue: newPortValue,
                            linesThatAsserted: risingEdges);
     }
 }
 public void Start(PCI_7250 device, OnRisingEdgeDetected onRisingEdgeDetected)
 {
     m_shouldPoll = true;
     PollForRisingEdge(device, onRisingEdgeDetected);
 }