当前位置:编程学习 > C#/ASP.NET >>

线程返回值问题

以下是我学习线程传递参数并返回值的例子,

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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,