Q:

Farseer: RemoveBody is not working

I want to remove bodies after they touched the character(playerrect). But the bodies get not removed. I set a breakpoint in the following line but it doesn't get yellow: 
world.RemoveBody(world.BodyList[i]);

What is wrong? Why is the breakpoint not getting released?
How can I remove a body?
bool Player_OnCollision(Fixture fixtureA, Fixture fixtureB, FarseerPhysics.Dynamics.Contacts.Contact contact)
{
  if (fixtureB.CollisionCategories == Category.Cat1)
  {
    fixtureB.UserData = "RemoveMe";
  }
  return true;
}

playerrect = BodyFactory.CreateRectangle(world, 0.64f, 0.64f, 1.0f);
playerrect.BodyType = BodyType.Dynamic;
playerrect.Position = new Vector2(0.22f, 0f);
playerrect.FixedRotation = true;

playerrect.OnCollision += Player_OnCollision;

reccoin = BodyFactory.CreateRectangle(world, 0.64f, 0.64f, 1.0f);
reccoin.BodyType = BodyType.Static;
reccoin.Position = new Vector2(0.96f, 4.16f);
reccoin.IsSensor = true;
reccoin.CollisionCategories = Category.Cat1;

 protected override void Update(GameTime gameTime)
 {
   float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
   world.Step(Math.Min(elapsed, (1f / 60f)));
   for (int i = world.BodyList.Count - 1; i >= 0; i--)
   {   
     if (world.BodyList[i].UserData == "RemoveMe")
     world.RemoveBody(world.BodyList[i]);
   }

 base.Update(gameTime);
 }

//Drawing:
spriteBatch.Draw(coinSprite, ConvertUnits.ToDisplayUnits(reccoin.Position),
                                   null,
                                   Color.White, reccoin.Rotation, new Vector2(coinSprite.Width / 2.0f, coinSprite.Height / 2.0f), 1f,
                                   SpriteEffects.None, 0f);

A:

It would be easier and faster to just remove the fixture on collision, instead of looping and checking for a string you set earlier.
I would update the OnCollision function as follows:
bool Player_OnCollision(Fixture fixtureA, Fixture fixtureB, FarseerPhysics.Dynamics.Contacts.Contact contact)
{
  //If category group 1
  if (fixtureB.CollisionCategories == Category.Cat1)
     world.RemoveBody(fixtureB);

  return true;
}

And then your Update method:
protected override void Update(GameTime gameTime)
{
   float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
   world.Step(Math.Min(elapsed, (1f / 60f))); 
   base.Update(gameTime);
}

