For A, seems the reason why it crashes often is that the static mesh is destoryed before it is removed from MyComponent.
It could work if:
if(MyStaticMesh->IsValidLowLevel())
{
MyComponent->SetStaticMesh(0);
MyStaticMesh->ConditionalBeginDestroy();
}