I understand your frustration with the complexity of DAQmx, compared to the Traditional DAQ ActiveX controls. I'll try to give you some information on where we are coming from on the issues that you brought up.
Regarding CPU utilization - Check out
this post for more information on the issue. The short of it is that this behavior is by design. The DAQmx driver essentially acts like the system idle process. It utilizes 100% CPU time when no other processes need the processor and yields the processor as necessary. However, we do understand that under many circumstances, users do not wan this behavior. We are evaluating ways to make this behavior customizable in future versions of the product.
Regarding threading - the DAQmx driver utilizes threading in as a key part of its internal architecture to gain significant performance benefits over the Traditional DAQ driver.
Regarding the complexity of the driver in general - many customers were frustrated by the lack of consistency in the way the DAQ driver supported various NI DAQ products. Users felt like they had to learn a whole new API when they changed a DAQ board or when they added a board to their system. One of the goals of the DAQmx driver is to provide a consistent, measurement-oriented API across the breadth of NI-DAQ hardware products. This results in more entry points in the API.
Regarding the complexity of the .NET API relative to the ActiveX controls - the ActiveX Traditional DAQ API did not include all of the features included in the LabVIEW Traditional DAQ API. This led to a lot of frustration on the part of Measurement Studio users. They could not be assured that they would be able to take advantage of hardware features without switching from Visual Basic to LabVIEW. The .NET and C++ DAQmx APIs currently support (and will continue to support) all of the hardware features that the LabVIEW API supports. Support for new hardware features means more classes, methods, and properties.
Regarding the ease of use of the ActiveX controls vs. the .NET API - admittedly, the ActiveX controls provide a rich design-time configuration experience through the property pages that is missing from the .NET DAQmx API persay. Our intention was to replace this functionality with the DAQ Assistant, integrated into Visual Studio .NET as a code-generating designer. You use the DAQ Assistant to interactively configure your DAQmx Tasks, much in the same way that you would use the ActiveX control property pages to configure an acquisition or generation in Traditional DAQ. Additionally, Measurement Studio includes a User Control generation feature, which generates code that demonstrates how to acquire data or generate data through a task.
Have you used the DAQ Assistant and/or the User Code generation wizard? Do you have any suggestions on how we might improve these tools to help improve the usability gap of the .NET API?