First, your comment is wrong: there's no requirement for threads to be in a different class. You just have to be careful about what you're referencing.
This has the appearance of the beginnings of a DoS attack program.
Don't go there!
NetTools fn = new NetTools();
Thread floodT = new Thread(new ThreadStart(() => fn.Flood(fcmd)));
floodT.Start();
Is one way to solve this.
Another:
NetTools fn = new NetTools();
Thread floodT = new Thread(new ParameterizedThreadStart(fn.Flood));
floodT.Start(fcmd);
and add
public void Flood (object address)
{
Flood(address as string);
}
In fact, your Flood method(s) can all be static.
This changes the above to eliminate the
NetTools fn = new NetTools();
line and change the
fn.Flood
to
NetTools.Flood