Yes @petewil, there is a way.
This was a reported bug (by You) that has been fixed.
To speed up the process, you have to get away from using Discovery().
This will require you to either Hard Code some information, or add code that loads this information from a file or database.
This process has also been shown in the "Manual_Initialize_Example".
To speed up your process,
Set the 4 main properties of the SonyDevice before you run the Initialize() method.
For example:
SonyAPI_Lib mySonyLib = new SonyAPI_Lib();
mySonyLib.LOG.enableLogging = false;
SonyAPILib.SonyAPI_Lib.SonyDevice mySonyDev = new SonyAPI_Lib.SonyDevice();
mySonyDev.Name = "STR-DN840 9C7529";
mySonyDev.Device_IP_Address = "192.168.0.16";
mySonyDev.Generation = 1; // If manually setting the 2 above properties, you must set this property.
mySonyDev.initialize();
string results = mySonyDev.send_ircc(mySonyDev.getIRCCcommandString("VolumeUp"));
If you are running this on a Generation 3 device, you will need to set the "actionList_URL" property to an empty string.
for example:
mySonyDev.actionList_URL = "";