Создайте приложение, в отдельном потоке вычисляющее значение π и непрерывно обновляющего его - C#
Формулировка задачи:
Создайте приложение, в отдельном потоке вычисляющее значение π и непрерывно обновляющего его в пользовательском интерфейсе. Для расчета числа использовать следующую формулу.
Pi = 4 - 4/3+4/5-4/7+4/9+-....
Решение задачи: «Создайте приложение, в отдельном потоке вычисляющее значение π и непрерывно обновляющего его»
textual
Листинг программы
class MainForm : Form
{
private System.Windows.Forms.Timer _timer = new System.Windows.Forms.Timer();
private Thread _worker;
private CancellationTokenSource _cts = new CancellationTokenSource();
private double _pi;
private double Pi
{
get
{
Thread.MemoryBarrier();
return _pi;
}
set
{
_pi = value;
Thread.MemoryBarrier();
}
}
public MainForm()
{
var label = new Label { Parent = this, AutoSize = true };
_timer.Interval = 1;
_timer.Tick += (_, __) => label.Text = Pi.ToString();
_timer.Start();
_worker = new Thread(() => CalculatePi(_cts.Token)) { IsBackground = true };
_worker.Start();
}
private void CalculatePi(CancellationToken ct)
{
Pi = 4;
for (double i = 3; !ct.IsCancellationRequested; i += 2)
{
int sign = i % 4 == 3 ? -1 : 1;
Pi += sign * 4 / i;
}
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
_timer.Dispose();
_cts.Cancel();
}
base.Dispose(disposing);
}
}