Я пытаюсь создать консольное приложение, которое создаст четыре потока для четырех функций, а затем получит то, что возвратит функции. Thread 1 должен рассчитать сумму массива, заполненного случайными числами, и вернуть его, поток 2 вычисляет произведение одного и того же массива и возвращает его, поток 3 создает и возвращает случайное целое число от -1000 до 1000, а четвертое - сумму, произведение и x (случайное число), сравнивает их и показывает, кто больше, чем кто.C#: настройка потоков и получение функций возвращаемое значение
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace threadsproject
{
class Program
{
public int thread1(int [] a, int n)
{
int i = n;
int sum = 0;
for (int j = 0; j < i; j++)
{
sum = a[j] + sum;
}
Console.WriteLine("\nThe sum is: ");
return sum;
}
public int thread2(int[] a, int n)
{
int prod = 1;
for (int j = 0; j < n; j++)
{
prod = a[j] * prod;
}
Console.WriteLine("\nThe product is: ");
return prod;
}
public int thread3()
{
Random rnd = new Random();
int x;
x = rnd.Next(-1000, 1000);
Console.WriteLine("\nYour random number is: {0}", x);
return x;
}
public void thread4(int sum, int prod, int x)
{
Console.WriteLine("\n");
if (sum < prod && prod < x)
{
Console.WriteLine("T1,T2,T3");
}
else if (sum < x && x < prod)
{
Console.WriteLine("T1,T3,T2");
}
else if (x < sum && sum < prod)
{
Console.WriteLine("T2,T1,T3");
}
else if (x < prod && prod < sum)
{
Console.WriteLine("T2,T3,T1");
}
else if (prod < sum && sum < x)
{
Console.WriteLine("T3,T1,T2");
}
else if(prod < sum && sum == x)
{
Console.WriteLine("T3,T1=T2");
}
if (sum < prod && prod == x)
{
Console.WriteLine("T1,T2==T3");
}
else
Console.WriteLine("T3,T2,T1");
}
static void Main(string[] args)
{
Random rnd = new Random();
string s;
int n;
int [] numbers = null;
Console.WriteLine("Give the size of the array: ");
s = Console.ReadLine();
n = int.Parse(s);
for(int i=0; i<n; i++)
{
numbers[i] = rnd.Next(-100, 100);
}
int sum, prod, x;
Thread mythread1 = new Thread(delegate() { thread1(numbers, n); });
Thread mythread2 = new Thread(delegate() { thread2(numbers, n); });
Thread mythread3 = new Thread(() => thread3());
Thread mythread4 = new Thread(delegate() { thread4(sum, prod, x); });
mythread1.Start();
mythread2.Start();
mythread3.Start();
mythread4.Start();
}
}
}
Так что, когда я создавать темы, я получаю ту же ошибку всем: Ссылка на объект требуется для нестатических полей, методы или свойств «threadsproject.Program.thread < 1,2,4> (int int int) '. Я работаю на visual studio 2013 .net 4.6. Не имея большого опыта программирования в потоках, я хотел бы помочь понять, что я делаю неправильно. Спасибо заранее всем!
Всегда хорошая идея для google в сообщении об ошибке. –