线程返回值问题
以下是我学习线程传递参数并返回值的例子,
using System;
using System.Threading;
namespace cmdText
{
/// <summary>
/// Thread2 的摘要说明。
/// 向执行方法中传递参数,并返回值
/// </summary>
///
public delegate int GetRusultCallBack(int result);
public class ThreadParam
{
private int n;
private GetRusultCallBack callback;
public ThreadParam(int n,GetRusultCallBack callback)
{
this.n = n;
this.callback = callback;
}
public void GetSum()
{
int sum = 0;
for(int i = 0 ;i < n ;i++)
{
sum = sum + i;
}
if(callback != null)
{
callback(sum);
}
}
}
public class Test
{
static int result = -1;
public static void Main()
{
ThreadParam tt = new ThreadParam(10,new GetRusultCallBack(GetResult));
Thread thread = new Thread(new ThreadStart(tt.GetSum));
thread.Start();
thread.Join();
Console.WriteLine("结果1为:{0}",result);//这里打印结果为-1,不知为什么,我要如何才能得到这个结果呢。
Console.Read();
}
public static int GetResult(int result)
{
Console.WriteLine("结果2为:{0}",result);//这里是可以得到结果的。
return result;
}
}
}
运行结果为:
结果2为:45
结果1为:-1
为什么这里不能正确得到结果呢?哪位大哥能否详细告诉我呢。谢谢了!
--------------------编程问答-------------------- 因为你result的限定词是 static. --------------------编程问答-------------------- Console.WriteLine("结果1为:{0}",result) 这句是在主线程执行的所以为 -1;
Console.WriteLine("结果2为:{0}",result);这句是在子线程执行的你传进去循环10次加起来就45了跟外边你定义的result么有关系
补充:.NET技术 , C#