Witam, potrzebuję pomocy z programem liczącym PI metodą Monte Carlo, program działa i wszystko jest w porządku na jednym wątku, jednak ma działać na wielu wątkach.
Gdyby ktoś mógł mi pomóc i powiedzieć jak to wygląda i co trzeba zmienić to byłbym wdzięczny. Program powinien przyjmować ilość wątków od użytkownika z textboxa.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Windows.Forms;
using System.Diagnostics;
namespace MonteCarloPi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// Po kliknięciu w guzik Policz, zostaje obliczone PI metodą Monte Carlo
// Opis działania guzika
private void calculateBtn_Click(object sender, EventArgs e)
{
int procesory = 0;
Int64 n = Int64.Parse(losowaniaBox.Text);
int thread = int.Parse(thread_nr.Text);
int trafienie = 0;
Random r = new Random();
Stopwatch stopWatch1 = Stopwatch.StartNew();
for (int i = 0; i < n; i++)
{
if (Math.Pow(r.NextDouble(), 2) + Math.Pow(r.NextDouble(), 2) <= 1)
{
trafienie++;
}
}
double aproksymacja = 4.0 * trafienie / n;
double bezwzgledna = Math.Abs(Math.PI - aproksymacja);
stopWatch1.Stop();
thread_time.Text = stopWatch1.Elapsed.TotalSeconds.ToString();
//wypisywanie do poszczególnych textboxów
resultBox.Text = trafienie.ToString();
aproksymacjaBox.Text = aproksymacja.ToString();
errorBox.Text = bezwzgledna.ToString();
procesory = Environment.ProcessorCount;
processor_nr.Text = procesory.ToString();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MonteCarloPi
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Pozdrawiam i z góry dziękuję za pomoc