Ну, так как метод является частным, имеет ли смысл для вызывающей стороны знать имя метода? Если бы он был общедоступным, вы могли бы передать метод в:
public void NewThread(Action task)
{
ThreadStart starter = delegate { task(); };
startThread = new Thread(starter);
startThread.Name = task.Method.Name;
startSpoolerThread.Start();
}
public void foo()
{
//do some work
}
NewThread(obj.foo);
Однако для частного метода я подозреваю, что enum / switch - лучший вариант ...
NewThread(TasktType.Foo);
Кроме того, вы можете получить метод с помощью отражения ...
public void NewThread(string name)
{
MethodInfo method = GetType().GetMethod(name,
BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
null, Type.EmptyTypes, null);
ThreadStart starter = delegate { method.Invoke(this, null); };
// etc (note: no point using Delegate.CreateDelegate for a 1-call usage