В чём причина ошибки "Нет перегруженного метода, который соответствует делегату"? - C#
Формулировка задачи:
Имеем:
где:
Ошибка 1 Нет перегруженного метода для "Calc", который соответствует делегату "System.Threading.ParameterizedThreadStart"
Как заставить это работать?
А вообще до какого кол-ва потоков многопоточность себя оправдывает?
foreach (var file in allFiles)
{
myThreads.Add(new Thread(new ParameterizedThreadStart(Calc))); //Ошибка!!!
Calc(myLengthList, myNestingList, file);
}private static void Calc(List<ElementOfLengthResultList> myLengthList, List<ElementOfNestingResultList> myNestingList, string file)
{
SyntaxTree tree = SyntaxTree.ParseFile(file);
IEnumerable<MethodDeclarationSyntax> methods = tree.GetRoot().DescendantNodes().OfType<MethodDeclarationSyntax>();
foreach (var method in methods)
{
if (method.Body != null)
{
BlockSyntax methodBody = method.ChildNodes().OfType<BlockSyntax>().Single();
IEnumerable<StatementSyntax> bs = methodBody.DescendantNodes().OfType<BlockSyntax>();
int Length = methodBody.DescendantNodes().OfType<StatementSyntax>().Except(bs).Count();
int nestingLevel = new NestingLevelVisitor().Visit(method);
string nameOfFile = Path.GetFileName(file);
int number = tree.GetLineSpan(method.Identifier.Span, false).StartLinePosition.Line + 1;
ElementOfLengthResultList elementLength = new ElementOfLengthResultList(Length, nameOfFile, number);
ElementOfNestingResultList elementNesting = new ElementOfNestingResultList(nestingLevel, nameOfFile, number);
myLengthList.Add(elementLength);
myNestingList.Add(elementNesting);
}
}
}
PS: дико извиняюсь за не тот раздел, случайно вышло, перенесите пожалуйста
Решил проблему так:
Thread th = new Thread(delegate() { Calc(myLengthList, myNestingList, file); });Решение задачи: «В чём причина ошибки "Нет перегруженного метода, который соответствует делегату"?»
textual
Листинг программы
Thread th = new Thread(delegate() { Calc(myLengthList, myNestingList, file); });
myThreads.Add(th);
th.Start();