This can only appear with either ReadItemValue or ReadMultipleItemValues methods. These functions need a valid value from the OPC server, that is, a value that has Good or at least Uncertain quality. The error means that the OPC server has provided a Value-Quality-Timestamp that has a Bad quality (and therefore no valid value with it), and has not supplied anything better (Uncertain or Good) during the timeout period. The methods attempt to wait, but cannot wait forever.
With ReadItem or ReadMultipleItems methods, the component returns whatever Value-Quality-Timestamp is provided by the server, i.e. does not attempt to wait for the Good or Uncertain quality.
Which method to use depends on the needs of the application. If, for example, you need to sum up two numbers that you read from the OPC server, and use the result of that computations for some further processing, there is no point doing it until you actually obtain the valid values for the computation. So, in this case, you would use ReadMultipleItemValues. If, in a different scenario, you need to display the current status of some tag on the screen, you may want to indicate which quality it has, and in this case you would simply use ReadMultipleItems, without waiting for a valid value.