CA2202不多次处理对象——托管C++中的多次 我们得到了很多实例:CA2202在托管C++中不多次处理对象,代码分析在./P>
对我来说,这似乎是代码分析中的一个错误,但我可能遗漏了一些东西 CA2202不多次处置对象对象“gcnew ConfigurationDataAssembler”可以在方法“DataAssembler::CreateConfigurationGuid,int^,int^,ObjectReference^,ObjectReference^,ObjectReference^,List^%,PLResult^%”中多次处置。为了避免生成System.ObjectDisposedException,您不应该对一个对象调用Dispose多次。:Lines:935938 PL dataassembler.cpp 935 它提到的两行是returnnullptr和returnconfigdto 我已经用注释//here、//和here标记了这些行 下面是函数CA2202不多次处理对象——托管C++中的多次 我们得到了很多实例:CA2202在托管C++中不多次处理对象,代码分析在./P>,c++,code-analysis,managed-c++,C++,Code Analysis,Managed C++,对我来说,这似乎是代码分析中的一个错误,但我可能遗漏了一些东西 CA2202不多次处置对象对象“gcnew ConfigurationDataAssembler”可以在方法“DataAssembler::CreateConfigurationGuid,int^,int^,ObjectReference^,ObjectReference^,ObjectReference^,List^%,PLResult^%”中多次处置。为了避免生成System.ObjectDisposedException,您不
//---------------------------------------------------------------------------------------------------------
// For IDataAssembler
Ivara::PL::Data::UIData::Control::MCLBConfig^ DataAssembler::CreateConfiguration( System::Guid activityKey, int subscriptionID, int controlID, ObjectReference^ pRootObjRef, ObjectReference^ pSelectedObjRef, ObjectReference^ pOwningObjRef, [Out] List<Ivara::PL::Data::UIData::Control::ConfigurationListItem^>^% configList, [Out] PLResult^% result )
{
try
{
AutoStopWatch stopwatch( __FUNCTION__, LogCategories::RemotingTimings );
ThreadToActivity cTTA( activityKey );
result = PLResult::Success;
//param check
if ( subscriptionID <= 0 )
{
throw gcnew Ivara::PL::Exceptions::IvaraArgumentException( _T( "Invalid configurationID" ), _T( "configurationID" ) );
}
//fetch config
UserConfigurationOR orUserConfig( subscriptionID );
if ( !orUserConfig.isSet() )
{
result = gcnew PLResult( PLResult::eStatus::RelatedObjectNotFound, String::Format( _T( "The user configuration {0} could not be found" ), subscriptionID ) );
return nullptr;
}
UserConfiguration* pUserConfig = orUserConfig.qryObjPtr();
if ( pUserConfig == NULL )
{
result = gcnew PLResult( PLResult::eStatus::RelatedObjectNotFound, String::Format( _T( "The user configuration {0} could not be fetched, even though isSet returns true" ), subscriptionID ) );
return nullptr;
}
//create assembler
ConfigurationDataAssembler assembler;
assembler.Initialize( controlID, pRootObjRef, pSelectedObjRef, pOwningObjRef, result );
if ( result != PLResult::Success )
{
return nullptr; // here
}
Ivara::PL::Data::UIData::Control::MCLBConfig^ configDTO = assembler.AssembleConfigurationDTO( pUserConfig, configList /*out param*/, nullptr );
return configDTO; // and here
}
catch ( OTBaseException& unmanagedException )
{
throw FatalExceptionPolicy::HandleUnmanagedException( &unmanagedException, __FUNCDNAME__, __FILE__, __LINE__ );
}
catch ( Exception^ managedException )
{
throw FatalExceptionPolicy::HandleManagedException( managedException, __FUNCDNAME__, __FILE__, __LINE__ );
}
}
这是你的真实代码吗?签名不匹配,我没有看到gcnew ConfigurationDataAssembler或任何Dispose。这是实际代码。我很确定这是在讨论行中构造的对象:ConfigurationDataAssembler;