Самый простой подход здесь - использовать замыкание над непараметрической (ThreadStart
) подписью:
Thread t = new Thread(() => fetchQuotes(cp));
...
t.Start();
Это статическая проверка на корректность во время компиляции, и это удобно (например, вы можете передать любое количество параметров).
Другой подход заключается в передаче object
в качестве параметра (ParameterizedThreadStart
):
Thread t = new Thread(fetchQuotes);
...
t.Start(cp);
...
void fetchQuotes(object obj)
{
SomeObject obj2 = (SomeObject) obj;
[DoSomething With SomeObject]
}
здесь мы передаем object
, поэтому не проверяем тип во время компиляции. Ошибки "braindead" появятся только во время выполнения.