Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Stels17
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 29
1

Создать приложение, в отдельном потоке вычисляющее значение w и непрерывно обновляющее его в потоке

19.11.2014, 23:04. Просмотров 810. Ответов 3
Метки нет (Все метки)

Ребят, с потоками не работал не когда. Есть задание , я понимаю что хотят, а вот как сделать потоками хз .

Создайте приложение, в отдельном потоке вычисляющее значение 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) "вывод результата" и т.д Выводить, как я понял тупо в консоль.

Если кто может помочь сделать или у кого-то есть похожое готовое задание , пж помогите. Буду благодарен.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 23:04
Ответы с готовыми решениями:

Создайте приложение, в отдельном потоке вычисляющее значение π и непрерывно обновляющего его
Создайте приложение, в отдельном потоке вычисляющее значение π и непрерывно...

Выполнение метода в отдельном потоке с возможностью его остановки
Поясните пожалуйста как выполнить определенный метод в отдельном потоке, чтоб...

При запуске метода с параметром делегатом в отдельном потоке виснет все приложение
public partial class MainWindow : Window { public delegate void...

Как осуществить запись(дозапись) в файл в отдельном потоке и закрыть его после записи?
Здравствуйте! Вопрос в названии темы! Подробнее планирую...

Запросы к БД в отдельном потоке
Всем привет! Хочу спросить специалистов и просто опытных людей. Делаю...

3
drondez
43 / 43 / 32
Регистрация: 15.04.2011
Сообщений: 187
19.11.2014, 23:53 2
Лучший ответ Сообщение было отмечено Stels17 как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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й параметр - процент выполнения нам не нужен, во втором передается результат вычисление
            }
        }
        
    }
}
1
Stels17
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 29
19.11.2014, 23:59  [ТС] 3
СПАСИБО !)
0
jumperAlex
74 / 26 / 19
Регистрация: 13.10.2014
Сообщений: 89
20.11.2014, 00:01 4
торможу сегодня)
только определись, удвоенный аргумент (первый твой пример) или просто опечатка?
напишу для второго. Console Application
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static void GetResult(int angleInRads, bool needThread)
        {
            if (needThread) new Thread(() => CalcAndTraceResult(angleInRads)).Start();
            else CalcAndTraceResult(angleInRads);
        }
 
        static void CalcAndTraceResult(int angleInRads)
        {
            var res = 1.0;
            Console.WriteLine(res);
            for (int i = 0; i < 10; i++)
            {
                var pow = Math.Pow(2, i);
                if (i % 2 == 0) res += pow * Math.Sin(angleInRads);
                else res -= pow * Math.Cos(angleInRads);
                Console.WriteLine(res);
            }
        }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 00:01

ProgressBar в отдельном потоке
Кинул на форму бутонку прогрессБар и тот элемент с не выговариваемым названием...

Очередь сообщений в отдельном потоке
В продолжение темы http://www.cyberforum.ru/csharp-net/thread811472.html Мне...

Запустить таймер в отдельном потоке
Добрый день! Пожалуйста, подскажите, почему данный код не работает? Запустив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru