Could you provide a small sample program that demonstrates your problem? When you add more info, make sure to edit your original question rather than adding an answer. This seems to work for me:
static void Main(string[] args)
{
string str = System.Reflection.Assembly.GetEntryAssembly().Location;
if (args.Length == 0) System.Diagnostics.Process.Start(str, "hello");
System.Threading.Thread.Sleep(5000);
}
When you run that console application, it will launch a second instance of itself and that second instance will detect the command line argument, which it will interpret as meaning that it should not launch any more instances of itself.