Well I don't have Battlefield 3 so I cannot test to be sure but if the error you are getting is a cross thread operation error then something like this might help.
string name;
private delegate void OnPlayerJoiningCallback(PlayerJoiningEventArgs e);
protected virtual void OnPlayerJoining(PlayerJoiningEventArgs e)
{
if (this.InvokeRequired)
{
OnPlayerJoiningCallback opjc =
new OnPlayerJoiningCallback(OnPlayerJoining);
this.Invoke(opjc, new object[] { e });
}
else
{
this.name = e.Name;
}
}