Создать приложение, в отдельном потоке вычисляющее значение w и непрерывно обновляющее его в потоке - C#
Формулировка задачи:
Ребят, с потоками не работал не когда. Есть задание , я понимаю что хотят, а вот как сделать потоками хз .
Создайте приложение, в отдельном потоке вычисляющее значение w и непрерывно
обновляющего его в пользовательском интерфейсе. Для расчета числа использовать
следующую формулу.
W = 1 + sin(x) – 2*cos(x) + 4*sin2(x) – 8*cos2(x) +..
Тип каждый раз как идет вычисление сразу выводить результат а потом добавлять след. переменную.
W = 1 + sin(x) "вывод результата" W = 1 + sin(x) – 2*cos(x) "вывод результата" и т.д Выводить, как я понял тупо в консоль.
Если кто может помочь сделать или у кого-то есть похожое готовое задание , пж помогите. Буду благодарен.
Решение задачи: «Создать приложение, в отдельном потоке вычисляющее значение w и непрерывно обновляющее его в потоке»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleApplication1 { class Program { static public void Main(string[] args) { System.ComponentModel.BackgroundWorker bgWorker = new System.ComponentModel.BackgroundWorker(); bgWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(bgWorker_DoWork); //Здесь происходят вычислиения bgWorker.WorkerReportsProgress = true; // Разрешаем сообщать о прогрессе bgWorker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(bgWorker_ProgressChanged); //Этот метод вызывается когда из потока вызывается ReportProgress bgWorker.RunWorkerAsync(); //Запускаем поток на выполнение while (bgWorker.IsBusy) { } Console.ReadKey(true); } static void bgWorker_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) { Console.WriteLine(((double)e.UserState).ToString("F4")); } static void bgWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { double w = 0; double x = 1.5; for (int i = 0; i < 100; i++) { if (i % 2 == 0) w += Math.Pow(2, (double)i) * i + Math.Cos(x); else w += Math.Pow(2, (double)i) * i + Math.Sin(x); (sender as System.ComponentModel.BackgroundWorker).ReportProgress(0, w); //Здесь 1й параметр - процент выполнения нам не нужен, во втором передается результат вычисление } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д