Используя Action в качестве параметра, почему это невозможно здесь? Что я могу сделать, чтобы решить эту проблему?
static void Main(string[] args)
{
while (true)
{
int eventsNum = 1000;
var evt = new CountdownEvent(eventsNum);
Stopwatch sw = new Stopwatch();
Action<Action> rawThreadTest = o =>
{
new Thread(() =>
{
o();
}).Start();
};
Action<Action> threadPoolTest = o =>
{
new Thread(() =>
{
o();
}).Start();
};
//Here I get ct error "The type arguments for method cannot be inferred from the usage. Try specifying the type arguments explicitly."
CallTestMethod(eventsNum, "raw thread", evt, sw, rawThreadTest);
CallTestMethod(eventsNum, "thread pool", evt, sw, threadPoolTest);
Console.ReadKey();
}
}
private static void CallTestMethod<T>(int eventsNum, string threadType, CountdownEvent evt, Stopwatch sw, Action<Action> proc)
{
sw.Restart();
evt.Reset();
for (int i = 0; i < eventsNum; i++)
{
proc(() =>
{
Thread.Sleep(100);
evt.Signal();
});
}
evt.Wait();
sw.Stop();
Console.WriteLine("Total for a {0} : {1}", threadType, sw.Elapsed);
Console.WriteLine("Avg for a {0} : {1}", threadType, sw.ElapsedMilliseconds / eventsNum);
}
}