Проблема здесь:
new ThreadStart(countfiles(@"E:/test"))
Аргументом является вызов метода , пытающийся маскироваться под группу методов . Компилятор может преобразовать совместимую группу методов, лямбда-выражение или анонимный метод в тип делегата, но не в вызов метода.
Попробуйте один из них:
// Lambda
var thread = new Thread(() => countfiles(@"E:/test"));
// Anonymous method
var thread = new Thread( delegate() { countfiles(@"E:/test"); });
Если вы хотите использовать метод-группу, вам понадобится отдельный метод:
private void CountTestFiles()
{
countFiles(@"E:/test");
}
и тогда вы можете сделать:
// Method-group
var thread = new Thread(CountTestFiles)
Вы также можете работать с типом делегата ParameterizedThreadStart
и связанными с ним перегрузками конструктора Thread
, но работать с ним немного неудобно, поскольку аргумент равен object
, поэтому приведение куда-либо или другое приведет к быть неизбежным.