Well, in .NET you have the concept of delegates, and you have Actions and Functions which are in fact just delegates.
A Function represents a function that takes some input parameters and has a return value. An action represents a method that takes some input parameters but doesn't return any value.
So it's depending on what you woud like to achieve.
Here's a demo sample:
static void Main(string[] args) { myPublicStarter(); } public static void myPublicStarter() { Starter("Test", () => DoWork("My Id String Passed here")); } public static void DoWork(object myIDString) { Console.WriteLine(myIDString); } private static void Starter(string myIDString, Action paramethod) { paramethod.Invoke(); }
}
Note: I've made the classes static as I've converted it to a console application.

Now, to adapt the code to work with threads, you can use the following:
static void Main(string[] args) { myPublicStarter(); } public static void myPublicStarter() { Starter("Test", x => DoWork("My Id String Passed here")); } public static void DoWork(object myIDString) { Console.WriteLine(myIDString); } private static void Starter(string myIDString, Action<object> paramethod) { Thread myThread = new Thread(x => paramethod(x)); myThread.Start(myIDString); }
This will generate the exact same output as listed above.