[英]Return element from Thread
我试图从线程返回元素。 我已经编写了这段代码来做到这一点。 但是我的代码有时可以正常工作,但有时不能正常工作。 请帮助我了解这段代码有什么问题。 我正在C#中学习多线程
正确的结果CorrectResultImage
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Thread_CallBack_Method
{
public delegate int CallBackDelegate(int sumofNumbers);
class Program
{
public static int Sum(int sum)
{
return sum;
}
static void Main(string[] args)
{
CallBackDelegate callback = new CallBackDelegate(Sum);
Numbers numbers = new Numbers(3, callback);
Thread t1 = new Thread(numbers.sumOfNumbers);
t1.Start();
Console.WriteLine("Sum of elements = {0} ",numbers.returnElementFromThread());
Console.ReadKey();
}
}
class Numbers
{
int _number;
CallBackDelegate _callBack;
public Numbers(int number, CallBackDelegate callback)
{
this._number = number;
this._callBack = callback;
}
int threadElement;
public void sumOfNumbers()
{
int sum = 0;
for (int i = 1; i <= _number; i++)
{
sum = sum + i;
}
if (_callBack != null)
threadElement = _callBack(sum);
}
public int returnElementFromThread()
{
return threadElement;
}
}
}
因为线程在将结果打印到控制台之前或之后都已完成。 如果仍然要等待结果,为什么要麻烦使用另一个线程?
仅当您要同时执行操作或使UI保持响应状态以使用户不会感到沮丧时,使用线程才有用。 您所拥有的是简单的代码串行执行...在这里不需要使用线程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.