我只是想学习线程,我想知道我们可以在创建线程时传递参数并使用返回值。我正在使用 Task.Factory.StartNew 创建线程。我只是想图没有匿名功能的东西。
有人可以帮助我更好地理解。我应该在这里使用代表吗? 下面是我想要使用的代码(仅用于学习目的,我不想使用匿名和lambda)。这可能吗?
using System;
using System.Threading.Tasks;
public class Example
{
private static int printMessage(int c)
{
int ctr = c;
for (ctr = 0; ctr <= 1000000; ctr++)
{ }
return ctr;
}
public static void Main()
{
Task t = Task.Factory.StartNew(new Action(printMessage));
t.Start();
t.Wait();
Console.WriteLine("The sum is: " + t.Result);
Console.ReadLine();
}
}
答案 0 :(得分:1)
Func<object, T>
并将c
的值作为object
传递。由于任务有结果,因此您应使用Task<int>
代替Task
:
private static int printMessage(object c)
{
int ctr = (int)c;
for (ctr = 0; ctr <= 1000000; ctr++)
{ }
return ctr;
}
public static void Main()
{
Task<int> t = Task.Factory.StartNew(new Func<object, int>(printMessage), 1);
t.Start();
t.Wait();
Console.WriteLine("The sum is: " + t.Result);
Console.ReadLine();
}