What's the purpose of ClearDataDifinition/ClearClientDataDefinition and how to use them properly?

Hi guys, I want to use ClearDataDifinition/ClearClientDataDefinition to remove
any data definition that is no more used, and I get CTD over and over again. I
even added ‘RequestOnSimObject(…,PERIOD_NEVER…)’ before calling them, but
no help at all. So, what is the correct way to use them? I use them like this:
simConnect.AddToClientDataDefinition(12345, offset, dataSize, 0,
SimConnect.SIMCONNECT_UNUSED); simConnect.RegisterStruct(12345);
simConnect.RequestClientData(DataID, 12345 12345
SIMCONNECT_CLIENT_DATA_PERIOD.ON_SET,
SIMCONNECT_CLIENT_DATA_REQUEST_FLAG.CHANGED, 0, 0, 0); …
simConnect.RequestClientData(DataID, 12345, 12345,
SIMCONNECT_CLIENT_DATA_PERIOD.NEVER,
SIMCONNECT_CLIENT_DATA_REQUEST_FLAG.DEFAULT, 0, 0, 0);
simConnect.ClearClientDataDefinition(12345); So far is good, but when I tried
to reuse the DefineID (12345) the way above, Add/Register/Request/Clear, get
CTD a lot. Could anyone give some tips? Thanks in advance.